计算机组成原理 |
您所在的位置:网站首页 › 硬件系统5大部件 › 计算机组成原理 |
前言
学习视频:2019 王道考研 计算机组成原理 推荐2019版本~ CPU运算器是计算机的执行部件,进行算术运算(加减乘除)和逻辑运算(与或非异)。 包含以下的主要部件: MQ:Multiple-Quotient Register,乘商寄存器,主要负责数据的算数运算,并保存结果ACC:Accumulator,累加器,专门用来存储操作数或运算结果ALU:Arithmetic and Logic Unit,算术逻辑单元,用以计算机指令集中的执行算术与逻辑操作X:通用寄存器PSW:Program Status Word,程序状态字寄存器,主要存储一些状态(有无移除、进位、错误等信息),可供控制器参考运算器的核心是ALU,MQ、ACC、X这三个寄存器是最基本的寄存器。 控制器是计算机的指挥中心,进行协调各部件之间的自动化协调工作。控制器由CU、IR、PC组成: CU:Control Unit,控制单元,分析指令,给出控制信号。IR:Instruction Register,指令寄存器,用于存放当前的指令,内容来自主存中的MDR。会将该指令发送给CU解析PC:Program Counter,程序计数器,存档指令的地址,有自动加1的功能。保证了主机可以自动化循环的工作。ALU和CU分别代表了硬件的两种设计方式 ALU:采用组合逻辑的设计方式:例如实现1+1这种亘古不变的逻辑操作,直接得出结果,看到输入就得到输出 CU:采用时序逻辑的设计方式:管理整个操作步骤的安排,简单记录本步的计算结果,然后进行判断,如果没有判断,就会不断的进行下一步下一步控制 主存储器存储器是计算机的存储部件,用来存放程序和数据。其中CPU可以直接访问的就是主存(内存条),而辅助存储器,例如平常使用的硬盘、固态、光盘等只是帮助主存存储更多的信息。辅存的信息只有加载在主存中,CPU才可以进行访问。 主存可以分为以下三个部分: 存储体:存储二进制信息MAR:Memory Address Register,存储访存地址,通过译码后找到存储体中的具体存储单元MDR:Memory Data Register,暂存需要从存储器中都或者写的信息基本工作流程:地址寄存器承接从外部传过来的一个地址,然后通过这个地址定位到存储体当中的某个存储单元,然后将内部的数据自动输出到数据寄存器中暂存,外部的单元再从数据从数据寄存器中取走。整个过程是通过时序逻辑进行控制的。 在现代计算机中MDR和MAR是存在于CPU中的,但是逻辑上仍然是主存的一部分,所以也会有以下的图: 存储器的最小存储单元,存放0或者1。 假如输入端有个0的数据,那开关如果是闭合的,例如在为1的状态下,则0的数据就会通过电路达到输出端。反之亦然。 而存储单元,就是存储元的阵列。 和存储元类似,有一个开关可以同时控制一整行的存储单元,但是此时同时控制的是8个存储元。 比如此时的开关是1,连通电路,则输出端将得到01100110的数据。这么一长串的数据叫做一个存储字,此时的存储字长为8bit,即一个字节:Byte。1Byte == 8bit 而存储单元的阵列,就是存储体。 地址和地址译码器可以参考:地址和地址译码器 因为CPU是直接与主存打交道的,那CPU输出一个存储器地址到地址总线上面,那这个地址怎么才可以选中一个存储单元呢?这个就是译码器要解决的问题。译码的过程是编码的逆过程,将一长串二进制代码翻译成特定的对象(例如高低电平)。打个比方:地址译码器就像电话系统,打电话时输入电话号码就好比地址,根据输入的电话号码在若干门电话中只有一门电话被选中。 存储体的上一步工序中,就是地址寄存器传来的地址,通过这个地址找到存储体中的存储单元。地址寄存器传来的地址位数反映了存储 元的个数。比如有32个存储单元,而存储单元的地址是用二进制来表示的,那么5位二进制数就可以32个存储单元。那么,MAR的位数 是5位。在实际运用中,我们知道了MAR的位数,存储单元的个数也可以知道了。 对于一个地址寄存器中地址的位数为3位,则对应到存储单元就是 2 3 2^3 23个,如下图所示: 此时的地址码为010,结合38真值表可以得出,存储体中被激活的存储单元(这个词可能用的不对)为序号6,则输出的数据为序号6存 单元中的存储位:00101100。 3-8译码器真值表 键盘鼠标、相机、显示屏、触摸屏… 计算机的工作过程-取数指令(PC) --> MAR:将PC中要操作的指令放到主存中的MAR中。 M(MAR) --> MDR:主存根据MAR中的地址码,找到对应的存储单元,将数据暂存至MDR中 (MDR) --> IR:MDR中存储的指令交给控制器中的IR 此时取指令结束 OP(IR) --> CU:从IR中取出指令里面的操作码,交给CU去解析 此时分析指令已经完成,但是仍然没有拿到要处理的数据 Ad(IR) --> MAR:取出IR中指令的地址码,存储到MAR中 M(MAR) --> MDR:主存更绝MAR中的地址码,找到对应的存储单元,将数据暂存到MDR中 (MDR) --> ACC:将数据从MDR中取出交给ACC 执行指令结束 其中,数据和指令是以同等的地位存储到主存中的,从MDR中取出的是指令还是数据,通过指令周期的不同阶段来进行判断! 计算机的层次结构软件是灵魂、硬件是肉体,两者逻辑上是可以等同的(对于实现一个功能而言)。 机器语言:只有01这种二进制代码,例如0000,0000,000000010000 第一段0000,代表了需要执行的操作,后面两端代表了哪里找数据,对于人来说,显然是看不懂的。。。于是就开始找规律。。。 汇编语言:开始有了助记符,知道编址的规律之后,很容易可以定位到具体的位置,于是人开始让计算机去干查表的活儿,比如LOAD A, 16 ,这条指令的意思:将后面那个16地址所在的数据存到A这个寄存器中。通过汇编程序(汇编器)将汇编语言翻译成机器语言。 完成一个简单的加法操作: 16号单元数据于17号单元数据相加存于17号单元: LOAD A, 16 LOAD B, 17 ADD C, A, B STORE C, 17 由于类似这样的操作有很多,于是人又要开始偷懒了。。。。 高级语言:将这种重复的操作通过c=a+b的简单命令让底层去实现,例如C、C++、爪洼等。通过编译程序(编译器)将这种高级语言翻译成汇编语言。总之人越来越懒了。。。 最后发展到以下的五大层次结构 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |