从零开始构建现代计算机--第五章,02-HACK计算机硬件体系
Hack平台的大部分行为都发生在CPU中,因此主要任务就是构建CPU,其他的主要是正确连接。
CPU
CPU的实现目标是建立逻辑门结构,使其能执行指定的HACK指令和读取下一条要执行的指令。
CPU包括:
- ALU,执行HACK指令
- 一组寄存器
- 控制逻辑,用于指令获取和解码
下图给出除控制逻辑部分的连接方式:
控制逻辑的功能
- 指令解码(Instruction decoding),解析出指令所代表的意思(指令的功能)
- 指令执行(Instruction execution),发信号指示计算机各个部分应该做什么工作来执行指令(指令的功能)
- 读取下一条指令(Next instruction fetching),在执行当前指令的同时,CPU还可以确定下一条指令的地址,通过程序计数器的输出端发送,指出下一步执行哪一条指令(指令的功能以及ALU的输出)
- 指令解码(Instruction Decoding),按位域分解指令:“i xx a cccccc ddd jjj”,若i=0,表示是A指令,将i位外的15位数值解释成常数,若i=1,表示是C指令,按C指令的位域规范解释相应位的含义。
- 指令执行(Instruction Execution),将各个域同时发送到CPU的各个组件,各组件按接收到的指令内容各自工作,协同执行指令
内存
将RAM16K,SCREEN,KEYBOARD三个底层芯片用统一的逻辑地址空间来管理,这个空间地址从0到24576(0x0000到0x6000)
计算机
将CPU和内存连接起来,就可以构成计算机,可能的实现方案:
HACK与典型计算机的比较
1
- 都是冯·诺伊曼结构
2
- HACK是最小系统
- 典型计算机平台有更多的寄存器、数据类型、更强大的ALU、更丰富的指令集
3
- Hack将地址空间分成独立的两部分,允许在同一个时钟周期内实现对指令的读取和执行。简化的代价是不能动态地改变程序。
- 典型计算机使用单一的地址空间用于存储数据和指令,指令中描述的指令地址和可选择的数据地址必须发送到相同的目的地:共享地址空间的单一地址输入。因此会相互冲突,标准的解决方案是将计算机的实现基于双周期控制逻辑。在读取循环(fetch cycle),从内存的输入端输入指令的地址,从内存中读取指令,暂存到指令寄存器中。在执行循环(execute cycle),解码指令,得出操作数所在内存单元的地址,并将该地址从内存地址的输入端输入,使指令可以操纵指定的内存单元。
4 I/O
- Hack键盘和鼠标相当简单
- 典型计算机与多个I/O设备相连。显示器的功能比Hack强大,具有更多像素,每个像素有若干亮度级别和颜色。
- 典型计算机也通过内存映像控制I/O。但不同的是,内存映像中通过若干个位控制三个基本色的亮度级别,由此产生该像素的最终颜色。
- HACK直接将像素映像到内存的位中,而典型计算机允许CPU发送高级图像指令到用于控制显示器的**显卡(Graphic card)**上,让显卡通过其内嵌的芯片组完成特定的绘制任务,这些任务对CPU来说可能相当麻烦,如圆圈和多边形等。
题外话
复杂指令集计算机(CISC, Complex Instruction Set Computing)
倡导者认为,为了取得更好的性能,必须提供丰富的详细的指令集。
精简指令集计算机(RISC, Reduced Instruction Set Computing)
RISC为了尽可能的提升硬件速度,使用了较简单的指令集。
HACK计算机既不具有强大的指令集也没有采用特殊的硬件加速技术。
硬件设计
设计计算机硬件时,大部分的努力和创造都致力于使计算机获得更好的性能。因此,关于硬件体系结构的课程和教材都关注诸如内存层级、更好的I/O交互、流水线操作、并行化、指令预取等的优化技术。