GTLC全球技术领导力峰会·上海站,首批讲师正式上线! 了解详情
写点什么

计算机原理介绍:微处理器与总线部分

2019 年 9 月 16 日

计算机原理介绍:微处理器与总线部分

微处理器(CPU)是计算机系统的核心部件,控制和协调着整个计算机系统的工作。



微处理器主要具有以下功能:能够进行运算,主要是算术运算和逻辑运算;能对指令进行译码,寄存并执行指令所规定的操作;具有与寄存器和 I/O 接口进行数据通信能力;少量数据的暂时储存;能都提供这个系统的所需要的控制信号以及定时;能够响应输入或者输出设备发出的中断请求。


这些对 CPU 进行了大致概括,我们会在接下来的几章中,着重对 CPU 的一些功能进行详细介绍。本文首先说下字长,字长是 CPU 在同一时间内能够一次处理的二进制位数,通常是指 CPU 内部寄存器的位数以及数据总线的位数,比如开发人员经常听到的 32 位、64 位就是指字长。


CPU 主要是由运算器和控制器两大部分组成,上一篇文章详细分析了逻辑电路的构成,今天分析一下他们的作用。


运算器是由算数逻辑单元(ALU),通用寄存器和专用寄存器以及内部总线构成,其主要功能是实现算数运算以及逻辑运算。控制器的作用是控制程序执行,是整个系统的的指挥中心,具备如下基本功能:


指令控制


计算机的工作过程就是连续执行指令的过程,指令在存储器中是连续存放的。普通情况下,指令是按照顺序一条一条的的取出并执行,只有在特殊情况下,碰到转移类指令才会打断或者改变顺序。控制器要根据指令所在的地址按顺序取出指令并分析,传送必要的条件,并在结束指令后存放运算结果。总之,要保证计算机指令的顺利执行。


时序控制


指令是在时钟信号的严格控制下运行的,一条指令的执行时间称为指令周期,不同指令的指令周期中所包含的机器周期数也是不一样的,一个机器周期中包含多少时钟周期也不相同,这些周期信号用于计算机平常的工作,在控制器的控制下,按一定的关系进行工作。


操作控制


操作控制是根据指定流程,确定在指令周期的各个节拍中要产生的微操作控制信号,以有效完成各条指令的操作,除此之外还对异常情况进行处理。


控制器主要由如下几方面构成:


  • 程序计数器(PC),主要用来存放下一条要执行的指令在存储器中的地址。

  • 指令寄存器(IR),指令寄存器用于存放从存储器中取出的待执行指令。

  • 指令译码器(ID),主要是指令译码。

  • 时序控制部件,产生计算机运行时所需的时序信号。

  • 微操作控制部件,这部分是控制器的主体。


CPU 想要对数据进行读写,必须和外部器件(严格来说应该是芯片)进行三类信息交互,分别储存单元的地址(地址信息),器件选择,读写命令(控制信息),读或写的数据 (数据信息),那么 CPU 是通过什么将地址,控制信息和数据传输进芯片的呢?


计算机传输处理的信息都是电信号,电信号要用导线传送,当然计算机不叫导线,叫总线,物理上的解释为一根根导线的集合。逻辑上划分为地址总线,数据总线和控制总线。数据总线的宽度决定了 CPU 与外界的数据传送速度,这些信息全部从内存中读取。


地址总线


CPU 通过地址总线指定存贮单元,地址总线上能传多少个信息,CPU 就能对多少个存储单元寻址。一个 CPU 有 N 根地址总线 ,则可以说这个 CPU 的地址总线宽度为 N,这样的 CPU 最多可以寻找到 2 的 N 次方个内存单元。


数据总线


CPU 内存或者其他器件之间的数据传送是通过数据总线来进行的,上面也提到了数据总线越大,传播速度越快。


控制总线


CPU 对外部器件的控制是通过控制总线来进行的,有多少控制总线,就意味着 CPU 对外部器件有多少种控制。所以,控制总线的宽度决定了 CPU 对外部器件上的控制能力。


本文主要涉及 8086/8088 CPU 的主要功能,8086/8088 CPU 有一个很大的改进,就是采用全新的结构完成上述几个内容,并将它分配给两个部件:执行单元(EU)和总线接口单元(BIU),EU 负责分析指令和执行指令,BIU 负责取指令,取操作数和写结果,这两个单元都能独立完成相应的工作。


行执行单元 EU 的主要功能是执行指令,分析指令,暂存中间运算结果,并且保留运算特征,由算数逻辑单元(运算器)ALU,通用寄存器,标志寄存器和 EU 控制电路组成。


EU 工作时不断从指令队列中取出指令代码,对其译码后产生完成指令所需要的控制信息。数据在 ALU 中进行运算,运算结果的特征保留在标志寄存器 FLAGS 中。


8086CPU 有 14 个寄存器,分别为 AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW,每个寄存器的低 16 位可以单独使用。同时,AX、BX、CX、DX 寄存器的高八位和低八位也可分别当作八位寄存器使用。


8086 CPU 所有寄存器都是 16 位,可以存放两个字节,AX、BX、CX、DX 通常用来存放一般性数据,被称为通用寄存器。


接下来看几条简单的汇编指令


  • Mov ax,18 将 18 送入 AX

  • Mov ah,78 将 78 送入 AH

  • Add ax,8 将寄存器 AX 的数值加上 8

  • Mov ax,bx 将寄存器 BX 的数据送入寄存器 AX 里面

  • Add ax,bx 将寄存器 BX 中的数值和寄存器 AX 中的数值相加,结果存进寄存器 AX 中。


内存分段管理技术


8088/8086 CPU 的内部结构都是 16 位,即内部寄存器只能存放 16 位二进制码,内部总线最多也只能传送 16 位二进制码,16 位二进制码最多只具有 2^16=64K 种组合,如果用二进制码表示地址,则 8086/8088 CPU 只能产生 64K 个地址,也就是最多能够管理 64 个内存单元。


由于内存容量的大小对计算机的性能有着密切影响,为了提高计算机系统的执行速度,极大提高寻址能力,为此采用了分段管理的方法,将内存空间分为多个逻辑段,每个逻辑段最大为 64K 个单元,段内每个单元的地址长度为 16 位,满足其 16 位内部结构的要求,这些将在后续章节中介绍。


相关文章:


《逻辑运算系列(一):入门篇》


《逻辑运算系列(二): 组合逻辑电路》


2019 年 9 月 16 日 08:361990

评论

发布
暂无评论
发现更多内容

第一周-作业

ray-arch

极客大学架构师训练营

第一周作业

阿呆

学习笔记:架构师训练营-第五周

四夕晖

缓存 消息队列 负载均衡架构 session处理方案

Raft算法之选举篇

心平气和

raft 选举

第一周学习总结

CraspLion

第一周作业

CraspLion

Raft算法之日志篇

心平气和

raft

Raft算法之快照篇

心平气和

raft 快照

云南区块链布局

CECBC区块链专委会

区块链 大数据

数字人民币将如何改变金融生态?

CECBC区块链专委会

数字人民币

Java一致性Hash算法及测试标准差

A p7+

设计自己的核心竞争力链

boshi

职场 随笔杂谈

架构师训练营第 5 周作业

netspecial

极客大学架构师训练营

蹲坑的时候该读什么?

善宝橘

架构师训练营第 1 期 - 第五周总结

Todd-Lee

极客大学架构师训练营

架构师训练营第 1 期第 五 周作业

郑凯元

极客大学架构师训练营

手把手教你理解决策树:从概念到应用

计算机与AI

Python 学习 决策树

架構師訓練營 week5 總結

ilake

Raft 作者亲自出的 Raft 试题,你能做对几道?

多颗糖

分布式系统

架构师训练营第 1 期第 五 周学习总结

郑凯元

极客大学架构师训练营

只争朝夕乘势上,不负韶华开新局——区块链上升为国家战略今日迎来一周年

CECBC区块链专委会

区块链 数字经济

架构师训练营第五周学习总结

Gosling

极客大学架构师训练营

第五周作业

极客大学架构师训练营

week05

……

第1周 架构方法作业

心在那片海

不了解Raft算法敢说研究过分布式?

心平气和

分布式 raft

第一周-学习总结

ray-arch

极客大学架构师训练营

架构师训练营第五周作业

四夕晖

架构师训练营第五周课后作业

Gosling

极客大学架构师训练营

极客时间架构师培训 1 期 - 第 5 周总结

Kaven

分布式事务实现及比较

luojiahu

分布式事务

DNSPod与开源应用专场

DNSPod与开源应用专场

计算机原理介绍:微处理器与总线部分-InfoQ