CSAPP:计算机基本结构与CPU内部构造

看过一遍CSAPP,对计算机的基本结构有了大致了解,但在学习过程中遇到难度较大的第四章,其中关于处理器运作的流程令人十分费解,本篇文章通过对CPU与计算机的大致结构做一个梳理,便于读者理解处理器、存储器、外存等的运作流程。

一、CPU组成

我在mooc上找了一张比较著名的cpu结构图,内容与结构都比较清楚

图1.1

 如图1.1,CPU主要由运算器、控制器、寄存器与时钟组成,时钟主要负责发出信号,与流水线的实现有关,这里不再讨论。

一、控制器是CPU的大脑,指挥协调CPU的行为,由指令寄存器IR、程序计数器PC和操作控制器0C三个部件组成,包括根据PC取指,从寄存器读写数据以及突发情况的异常控制;PC是CPU的核心所在,其大小为一个字,从计算机开机到断电,CPU都在不停地执行着PC指向的指令(存放在IR中),而操作控制器(Operations Controller)用于产生各种操纵控制信号,以正确建立数据通路。

二、运算器主要包括算术逻辑单元ALU与一系列通用寄存器,在第五章的处理器体系结构介绍中,ALU是一种重要的组合逻辑电路,对从寄存器取出数据进行算数或逻辑操作,主要包括加减乘除、与、或、非以及异或、移位等;值得注意的是,它不存储任何数据,只负责响应输入信号与运算;通用寄存器有很多种,设计四则运算的主要有累加器AX、乘商寄存器MQ与操作数寄存器X,用于暂存操作数(在这里,请区分组合逻辑与时序逻辑,ALU属于组合逻辑,也就意味着它不会储存上一次运算的结果以及其他状态信息,记忆功能由寄存器组实现);

三、寄存器:CPU内寄存器有多种,不同寄存器实现不同的功能,可以说,所有具有数据存储功能的部件都属于寄存器,其主要包括通用寄存器、标志寄存器、指令寄存器、段寄存器、描述符寄存器、MSR寄存器等多种,在这里,我们主要讲解通用寄存器、标志寄存器与指令寄存器:

        1、通用寄存器组(在运算器中提过)值得注意的是,x86寄通用存器组与Y86的相似,共有16个程序寄存器,存在CPU的一个寄存器文件中,如图所示:

        图1.2

 早期的指令集版本(例如8086)有8个16位的寄存器(%ax-%bp),随后的X86-64基于此发展成了16个,即(%rax-%r15),并利用嵌套技术兼容前面的低字节指令结构,两种体系间互不干扰。他们在计算机日常操作、存储器的读写、参数传递以及网络通信中发挥着重要的作用。

        2、标志寄存器(CC)(如图1.1所示),又叫状态寄存器、条件码寄存器,位于ALU与控制器间,里面含有众多标志位,如下表所示

寄存器

含义

CF

进位标志

PF

奇偶标志

ZF

零标志

SF

符号标志

OF

补码溢出标志

TF

跟踪标志

IF

中断标志

这些标志记录程序运行状态信息,由CPU自动设置与修改,其包含的条件信息常作为条件转移指令的控制条件。在第四章里面,这些控制条件由ALU运算产生,遇到异常,它便不会更新,其之后的步骤也会被阻塞。

        3、 指令寄存器(IR)。用于暂存当前正在执行的指令。其具体过程如下:

  1. 将程序计数器(PC)中的内容送至存储器地址寄存器(MAR),并送地址总线(AB)
  2. 由控制单元(CU)经控制总线(CB)向存储器发读命令。
  3. 从主存中取出的指令通过数据总线(DB)送到存储器数据寄存器(MDR)。
  4. 指令寄存器利用时钟信号CLK,将MDR的内容送至IR。
  5. 将PC的内容递增,为取下一条指令做好准备。

  指令寄存器IR存放着计算机下一步操作的所需指令,Y86-64指令集中的指令包含功能码、寄存器标识、操作数以及地址。

在上图我们可以看到,CPU通过一系列总线与内存(主存相连),这些总线在CPU与内存间传递着数据、控制以及地址信息,计算机采用缓存技术,通过构建多级缓存,来减少存取数据、指令所需时间。CPU作为L0级缓存,其存取速度十分之快,可在一个时钟周期内完成对数据的访问,从CPU到内存,数据访问速度逐渐下降,数据容量却在增大(到了内存RAM那里,CPU访问数据往往需要几十至几百个时钟周期);更下层的还有外存以及远程二级存储。

二、计算机大致结构

说完了CPU,接下来我们谈一下计算机的大致结构:

如图1.3所示,通过分析系统总线的结构,我们将对计算机的大致结构有所了解

图1.3

CPU总线接口与主存之间有一个I/O桥接器,与CPU相连的称系统总线,与主存相连的称内存总线,CPU的加载、存储与跳转操作均需经过总线,数据、指令以及地址在总线中传输。与外存以及其他设备相连的称I/O总线,我们常用的显示器、输入设备、磁盘等I/O设备均通过控制器或适配器与之相连;此外,I/O总线还提供众多扩展插槽。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值