设计一个简易的处理器(2)--处理器的硬件部件

来源:互联网 发布:男科网络推广 编辑:程序博客网 时间:2024/05/17 22:01

处理器是一个数字系统所以设计一个简易的处理器有必要了解数字电路.本文就是介绍数字电路的基本概念,以及描述CPU中的一些主要的逻辑元件.通过使用HCL(HardSoft Control Language)描述这些逻辑元件的控制逻辑,使得可以抽象地了解它们的功能,而不必知道它们的内部构造.

 

 

数字电路的基本概念

————

数字电路可以分为两种:组合电路和时序电路.

1.组合电路

    没有存储,所以没有电路的状态,可以看成一种信号,通过导线传输.

    没有时钟信号.

    输出可以及时响应输入(当然有很小的延时,忽略之).这样输出可以看成输入的boolean函数.

 2.时序电路

    时序电路  =组合电路+存储器+时钟

    存储着一种状态.输出受输入和时钟的影响.

    使用时钟对电路进行控制.

 

存储和时钟详解

组合电路无法存储信息,它们只是简单地响应输入信号,产生输出(f(输入)).

时序电路使用存储设备和时钟信号.存储设备由同一个时钟(周期性信号)控制,用于存储设备加载新值.

存储器设备可以分为两种:

1.时钟寄存器(寄存器).产生时钟信号,用来控制寄存器加载输入值.

2.随机访问存储器(存储器).包括虚拟存储器(通过地址访问)和寄存器文件(寄存器标示符编码).

 

寄存器操作:寄存器输出会一直保持在当前寄存器状态,直到时钟信号上升.当时钟上升时,寄存器输入上的值会变成新的寄存器状态.


:寄存器在硬件上就是一个电路(称为硬件寄存器);机器级编程中,将寄存器看作一个可以寻址的字(称为程序寄存器).

 

 

最基本的逻辑元件(逻辑门)

————

逻辑门总是active.在短时间内(忽略延迟),输出响应输入的变化.输出是输入的boolean函数.

下图是三个最基本的与们,或门和非门.




常见组合电路

————

将许多的逻辑门组合成一个网,形成一个构建计算块,称为组合电路.下面介绍几种常用的组合电路,并且使用HCL进行描述.

 

1.位级相等测试电路

    

[HCL描述] bool eq = (a&&b) || (!a&& !b);

 

2.字级相等测试电路

  

[HCL描述 ] bool Eq = (A == B);

 

3.位级多路复用器

   

[HCL描述] int out = (s && a) || (!s&& b)

 

4.字级多路复用器


[HCL描述]

int out =[

      s : A;

      1 : B;

];

 

: HCLCase语句:对选择表达式顺序求值,选中第一个值为1Case.

 

5.四路复用器


[HCL描述]

int out4= [      !s1 && !s0 :   A;  # 00      !s1:           B;  # 01      !s0:           C;  # 10      1:             D;  # 11];


6. ALU(CPU的重要组件)


ALU是一个组合电路,输出持续响应输入.上图中(0, 1, 2, 3)是控制信号,对应于Y86的四种算术/逻辑功能.当然以后你会看到ALU也会为响应不同的条件码,计算不同的值(后话).

 

 

常见数字电路

————

 

1.状态机(非常经典)


这幅图可以看出,一个数字电路,是由组合电路,存储器和时钟构成的.

 

2.Random-Access Memory

   常见的RAM有寄存器文件和存储器.下面以寄存器文件为例.

   

几点说明:

(1).明确一点,寄存器文件是一个数字电路(有内部存储),可以存储多个字,并且需要指定读写地址.

(2).这是一个典型的多端口随机访问存储器,有两个读端口和一个写端口.

(3).这个随机访问存储器,可以看成两部分.

      读的部分:可以"看成"一个组合电路, val()随着src(地址)的改变而改变(有点延迟).

      写的部分:受时钟信号控制(具体方式见前面:存储和时钟详解).

(4).为什么这个随机访问存储器没有读写控制电路?

      一是因为读写可以同步进行.二是因为在我们的Y86处理器中,使用ID=F表示不会读写任何寄存器.

       

3.数据存储器(也是一种随机访问存储器)

    

 

可以看出这里有一个读写控制逻辑,用来控制是读还是写. dmem_err指示是否超出地址范围.

 

 

处理器的硬件部件(先睹为快,SEQ处理中详细讲解)

————

先睹为快,看看处理器中到底有哪些重要的硬件部件.主要有: ALU,寄存器文件,数据寄存器,指令寄存器, PC增加,条件码(见下图的彩色部分).


 

*:本篇中的图片均来自本书的官网,我进行了改造(注释和添加),详见http://csapp.cs.cmu.edu/public/figures.html

        (Copyright© 2011, Randal E. Bryant and David R. O'Hallaron )

 

reference:

1. 深入理解计算机系统(原书第2版)

 

(版权所有,转载时请注明作者和出处-dennis_fan-http://blog.csdn.net/dennis_fan )


原创粉丝点击