简易计算机的搭建
1、一些无关紧要的前置知识
现代计算机类设备的主流架构一般有两种:一为冯诺依曼体系架构;一为哈弗架构。
主流计算机采用的架构一般为冯诺依曼体系,是将程序和数据放在一起存储的架构;
单片机设备一般采用哈弗架构,是将程序与数据分开存储的一种架构。
以下基本都是有关冯诺依曼架构的知识
冯诺依曼架构提出计算机由四个子系统构成:存储器(寄存器、内存、硬盘)、计算单元(ALU)、控制单元(进行协调各个单元)、输入输出单元(外设)。
CPU(中央处理器)是由寄存器、计算单元、控制单元组成。
一般64位机的系统为64bit.
CPU和内存、硬盘、外设等非CPU内部组件连接的中介为总线。总线分为 数据总线(两端组件可双向通信)、地址总线(单向)、控制总线(单向,用于传送指令)。
一个机器周期:取指令 —-> 译码 —-> 执行。有流水线时,可以相较来说同时进行,比如可在译码时进行下一个周期的取指令。
CPU指令架构分为 CISC复杂指令集(一般 x86CPU 电脑)和 RISC精简指令集(一般 ARM的CPU 手机、单片机)。
2、复用器(选择器)
复用器的作用是选择使用哪一个组件输入进来的数。
最简单的复用器是输入两个二进制位,输出指定的一个。这个功能可以使用一个单刀双掷的继位器实现,控制继位器的触点选择和继位器的高低电平实现选择输出。
多位的复用器可以使用几个单个复用组成。一个复用器分高低电平,低走下一层第一个复用器,高走下一层第二个复用器,如此反复可实现多位复用器。
输入n个二进制位和一个选择数,选择数可以是十进制,十进制0即走第零个,以此类推。也可以将十进制拆成二进制来选择,拆成二进制时,把整个复用器看作好几个组合成的,最高位走最后一个小的二选一复用器进行次层两边的选择,依此类推。
n位复用器即2^n个输入和一个位数选择和一个输出
3、简易的计算单元(ALU)
由加法器、减法器(实际计算机中没使用,这里直接用了)、与、或和两个复用器及一些输入输出构成。输入为两个操作数、一个进位数、一个选择数(选择输出哪个运算结果。截取一下这个选择数的低一位,作为加法器和减法器的进位/借位选择,不截取的话复位器要选择位数多的,造成浪费。)。输出为一个结果和一个进位/借位。
我们做的ALU会把所有运算都做一遍输出选择的运算,有没有办法让它只作我们选择的运算?
4、PC计数器
一个加法器和一个寄存器和几个输入输出组成。寄存器的输出传给加法器的一个操作数,同时寄存器的输出作为计数器的结果,第一次寄存器的输出为0,所以计数器从0开始计数;加法器的另一个操作数为1,进位器0;加法器的输出有两个,一个相加的结果,放进寄存器的输入,进行下次加一,另一个输出为进位,溢出后,相加结果变为零,进行第二轮的计数。寄存器有一个使能开关,和一个时钟。一次时钟周期进行一次加一计数。
5、实现一块内存
使用分线器和n个寄存器即可实现一个n位寻址的存储,具体细节略。
6、带内存和寄存器的ALU
只说下原理。可以对PC计数器操作实现从内存的不同地址读出数据(可以通过输入往内存中输入数据),读出数据后通过ALU与寄存器中的数相加(寄存器中初始为0),即第一次相加得到第一个数放到寄存器中,如此循环,可以实现从内存中不断读数并不断相加。