有关计算机组成的分享~
计算机的组成部分可以分为三部分:中央处理单元(CPU),主存储器和输入/输出系统。
其实这里面,也可以加入第四部分,就是系统总线,系统总线作为连接各设备,其如何设计也没那么简单。
本文先简单介绍其中各个组成部分,对立面某些子功能模块具体的展开,根据情况单独成文。
CPU又分为三部分:算术逻辑运算单元(ALU, Arithmetic Logic Unit),控制单元,寄存器。
这里的ALU,就是对数据执行逻辑、移位、算术运算的主体。
寄存器,是用来存放临时数据的高速独立的存储单元,这里的CPU中的寄存器,是计算机中读取速度最快的存储器,当然也是成本最高的。所以不能大规模使用,只能在CPU中作为寄存器,不能作为主存。
1)数据寄存器(R1~RN):顾名思义是存储数据的,包括输入数据和运算结果;在过去,只有几个寄存器用来存储输入数据和运算结果,现在,由于越来越多的复杂运算改由硬件设备实现(而不是使用软件),所以计算机在CPU中使用几十个寄存器来提高运算速度。并且需要一些寄存器来保存这些运算的中间结果。
2)指令寄存器(IR,instrution register):CPU从内存中逐条地取出指令,并将取出的指令存储在指令寄存器中,解释并执行指令。
3)程序计数器(PC,programm counter):程序计数器中保存着当前正在执行的指令。当前的指令执行完成后,计数器将自动加1,指向下一条指令的内存地址。
控制单元控制各个子系统的操作,控制是通过从控制单元到其他子系统的信号来进行。
主存储器是计算机中的第二个子系统,它是存储单元的集合,每一个存储单元都有唯一的标识,称为地址。数据是以称为字的位组成在内存中传入和传出的,这个“字”可以简单理解为,是内存中基础传输单位。从内存向CPU中读取数据,那么是一个二进制位一个的传,还是两个两个的,或者16个16个,这个都是要根据设计者最初的设计规模,使用规模来考虑的,但是无论如何考量,最终会形成为一个内存通用的“字”的大小规模,比如有的是用8位二进制作为一个字,那么总线中每次传输的就是一个8位二进制数码,这个字就是一个基础单位。往往内存单元也是这么设计的,比如,一个字有8位,是因为每个存储单元是由8个触发器门电路并列形成的。
在存储器中存取每个字都需要相应地标识符。尽管程序员使用命名的方式来区分字(或一组字的组合),但在硬件层次上,每个字都是通过地址来标识的。所有在存储器中标识的独立的地址单元的总数称为地址空间。
内存地址用无符号二进制整数来定义。
输入/输出系统:
计算机中的输入/输出子系统代表了一系列设备,这个子系统可以使计算机和外界通信,并在断电的情况下存储程序和数据。输入/输出设备可以分为两类:非存储设备和存储设备。
1)非存储设备,就是那些鼠标啊,键盘啊,显示器啊,打印机啊,之类的。
2)存储器设备:比如,磁盘、磁带、光盘等等。这一类可以和存储器一起单独开一篇来讲。
总线:
CPU和存储器之间通常由称为总线的三祖线路连接在一起,它们分别是:数据总线、地址总线、控制总线。
输入/输出设备不能直接与总线连接,需要一层中间设备,也就是控制器,或者说接口。因为输入/输出设备不一定都是电子设备,都是些机电、磁性、光学设备等,其处理操作速度要慢很多,与CPU、内存等不同步。
这种接口有很多种类型:比如,SCSI,火线,USB,HDMI。
通常CPU使用相同的总线在主存和输入/输出设备之间读写数据,唯一的不同是指令。有两种方式:I/O独立寻址和I/O存储器映射寻址。
在I/O独立寻址中,用来读写内存的指令与用来读写I/O设备的指令是完全不同的,根据指令不同,CPU自然可以很明确地知道读取哪里的数据;在I/O存储器映射寻址中,CPU将输入/输出控制器中的每一个寄存器都看做内存中的某个存储字,也就是说对CPU而言,它并不能或者不在乎到底是从哪儿读取数据,在它看来都是在同一个地方(主存)中读取数据,这种方式有个好处,就是有一个较小的指令集,因为不针对I/O设备单独创建指令了。
通用计算机使用称为程序的一系列指令来处理数据。CPU利用重复的机器周期来执行程序中的指令,一步一条。包括三步:取指令、译码和执行。
因为I/O设备的运行设备比CPU慢得多,因此CPU的操作在某种程度上必须和I/O设备同步,有三种方式被设计用于同步,分别是:
1)程序控制I/O
CPU不时地查询I/O设备的状态
2)中断控制I/O
当I/O设备准备好时,它通知(中断)CPU。
3)直接存储器存取(DMA)
这种方法需要DMA控制器来承担CPU的一些功能。DMA中有寄存器,可以再内存传输前后保存数据块。当准备好传输数据时,则由DMA控制器通知CPU它需要获得总线的使用权。
不同的体系结构:
1)CISC,复杂指令集计算机(complex instruction set computer),CISC体系结构的设计策略是使用大量的指令,包括复杂指令。
Intel公司开发的奔腾系列处理器,使用的就是CISC架构。
2)RISC,精简指令集计算机(reduce instruction set computer),复杂指令使用简单指令子集模拟。
3)流水线
用此方式来改变吞吐量(在单位时间内完成的指令总数),这个理念是如果控制单元能同时执行两个或三个阶段,那么下一条指令就可以在下一条指令完成之前开始。
4)并行处理
同样是改善了吞吐量。
SISD组织(单指令流,单数据流),SIMD组织,MISD组织,MIMD组织(多指令流,多数据流)。
如上仅是简单介绍了计算机的组成,其中每一块都值得打开单独来讲,比如存储器啊,总线结构啊,I/O和CPU之前的连接,I/O接口,串行处理/并行处理模式等。