Li Jiaheng's blog
813 字
4 分钟
处理器原理(0·2) 主要硬件(简)
WARNING

这是《深入理解计算机系统》(CS)的笔记,彼时还未上CO,OS等计算机系统基础课,存在理解不到位与错误之处.
处理器体系结构的内容都记录地非常简略…

需要根据需求的指令设计要用到什么硬件组件。

一、组合逻辑电路#

实现一个逻辑表达式,不用多说。给一个输入,它给出一个结果,不存储任何东西。
《深入理解计算机系统》中定义了一种简单的 硬件控制语言HCL,它主要描述数字逻辑电路的控制部分,对应的就是各种组合逻辑电路。注意它不是接下来的计组课中将要用到的完整的硬件描述语言HDL。简单说明如下:
1)多个1bit的输入,1bit的输出,对应一个简单的bool表达式,表示如下:

bool expr = (A == B);  //等价  
bool out = (s && a) || (!s && b);  //1位二路选择器  

2)程序中输入输出往往是许多了bits,也就是一个“字”(word)。在Intel体系中,字是short类型16字节数据。在其它指令集中,字可以依便利规定,比如一个指令集只设计64bits数的各种运算(比如书中的Y86-64),那么将字定义为64bits数据更方便。
可以简单粗暴地定义一个64位输入输出完整的组合逻辑电路:

word Out = [  
		s : A;      //如果选择位s==1,就输出A  
		1 : B;      //default:输出B  
]  //64为二路选择器  

再不济也可以把真值表搬上来(笑)
3)集合从属
提供了一种更方便的逻辑表达式写法:in ,类似python中的in,当输入为给定集合中的元素,就返回1.
比如4bits输入,输出为两个1bits的控制标记:

bool s1 = Input in {2,3,4};  
bool s0 = Input in {2,3,4,5,11};  

二、存储器#

时钟负责在相应的时钟线路上交替产生高低电频(周期)。

一个简单的存储器操作是:当始终CLK到上升沿时,读入输入X,将其内存储的东西改为X,并且输出X。其它时刻将维持X不变。一般还会有相应的使能端口,使能端口为0,保持存储内容和输出不变,输入无法改变其状态。

寄存器文件:多个寄存器放在一起,通过寄存器ID读取和写入。同样在写端口(输入端口)中,只有在时钟上升沿才能激活。
配套的有写地址、读地址,写入/读出的时候先将对应地址设置好,再写/读。
注意读操作是不受时钟控制的,只要在相应的srcA srcB上设置了地址,就会把相应的A、B输出端口设置为相应寄存器所存储的值。

数据存储器(随机访问存储器),抽象为:有一个用于写的数据输入,一个读写通用的地址端口,时钟,输出端口,读、写模式设置(或使能)端口,error输出(设置stat),简单明了。
见书P263吧。。图片会倒过来。

处理器原理(0·2) 主要硬件(简)
https://namisntimpot.github.io/posts/computersystem/处理器体系结构/0_2主要硬件简/
作者
Li Jiaheng
发布于
2022-08-15
许可协议
CC BY-NC-SA 4.0