特殊函数计算器的运行结果显示如下两图示例
三角函数运算输入4位定点有效数字的角度,输出sin值和cos值,运算+输出时间约为130秒输出sin值,再过10秒输出cos值,输入角限制为0-83.88度之间。开方运算输入7位有效数字,可以选择小数点在第三位或整数形式,输出结果为4位开方结果和4位余数,运算+输出时间约为50秒输出开方值,再过10秒输出余数。
储存器架构和流水线
因为还没有做完这一部分,可能还会有修改,所以就简要的介绍一下。
现代计算机都是围绕储存器为中心,因为储存器容量极其巨大,其占用的晶体管数量远远超过用于运算和指令分配的其他逻辑单元。
比如一颗GPU,拿GK104为例,一共30多亿晶体管,片上缓存就占了芯片面积的接近三分之一。这还只是第一级的读取机制,缓存分一二三级,后面还有主储存器(内存),还有硬盘,这些容量每一级都要比上一级大了大约两个数量级。容量大,晶体管多,电流流过的时间长,最终读取到数据的时间必然变长。但是处理器时时刻刻都在做运算,如果第一时间不能取到需要的指令和数据,流水线就会空置。现代处理器运算速度和储存器延迟的鸿沟越来越大,计算机核心技术基本都是围绕储存器开展的。为了填补这拉开的时间差所造成的瓶颈,各种流水线结构,总线结构,硬件算法孕育而生。
流水线技术使得整个指令流程前后重叠,能最大限度利用每一个硬件单元。早期CPU流水线级数较小,现在的CPU一般都是十几级流水线。流水线级数也不是越大越好,因为存在一些情况,比如较晚的分支预测错误,会导致流水线冒泡。
本工程使用Harvard结构,相对于Neumann结构。程序储存器和数据储存器分开放置。程序储存器1kb,数据储存器0.5kb。由于指令是统一的双字节,所以程序储存器只按字(双字节)存取。而数据格式可以是单字节(低8位),也可以是双字节,所以数据储存器可以按字或按字节存取。
寄存器方面,ALU用ACC存放X操作数和运算结果,这里的运算结果都是需要双操作数的那些逻辑运算指令比如加减乘除与或异或,另一个操作数由Y寄存器存取。除法的余数最终会输出到最靠近除法器输出端的那4个寄存器的末端一个。所以如果之后要使用余数,就要避免在转移余数之前使用该寄存器做其他事情。另外还有8个通用寄存器供自由使用,一共可自由支配的寄存器有13个,ACC+12个通用寄存器。再算上栈区的4个单元,就一共有17个。
下图为简易的CPU功能模块立体位置图。
更多相关资讯请关注:我的世界专区