1、计算机系统的层次结构
约 5514 字大约 18 分钟
2025-06-22
每个二进制数位称为1bit(比特) 一字节byte=8bit 处理器的机器字长是计算机一次整数运算所能处理的二进制位数
计算机分为硬件和软件 软件又分为系统软件和应用软件
硬件的发展 电子管 晶体管 中小规模集成电路 大规模、超大规模集成电路
冯诺依曼结构
特点
由五大部件组成 指令和数据以同等地位存在存储器,可按地址寻访 指令和数据用二进制表示 指令由操作码和地址码组成 存储程序 以运算器为中心 运算器不仅计算还作为数据的中转
ENIAC需要手动接线来控制计算,计算机执行完一条指令人工接线输入下一条指令
冯诺依曼提出存储程序 将指令以二进制代码形式事先输入计算机的主存储器,然后按照其在存储器的首地址执行程序的第一条指令,接着按顺序执行其他指令直至结束
计算机系统中软件和硬件在逻辑上是等效的 硬件上可以专门设计一个乘法计算器,也能软件上用多次加法模拟乘法运算
主存储器
存储单元:每个存储单元存放一串二进制代码 存储字:存储单元中二进制代码的组合 存储字长:存储单元中二进制代码的位数 存储元:即存储二进制的电子元件,每个存储元可存1bit
存储地址寄存器Memory Address Register
cpu告诉主存储器存储的地址 MAR位数反映存储单元的个数
存储数据寄存器Memory Data Register
cpu告诉主存储器存储的数据 MDR位数=存储字长
运算器
ACC:accumulator累加器,用于存放操作数或运算结果 MQ:multiple-quotient register商乘寄存器,在乘、除运算时用于存放操作数或运算结果 X:通用的操作数寄存器,用于存放操作数 ALU:算术逻辑单元,通过内部复杂的电路实现算术运算、逻辑运算
控制器
CU:控制单元,分析指令,给出控制信号 IR:指令寄存器,存放当前执行的指令 PC:程序计数器、存放下一条指令地址,有自动加一的功能
现代计算机结构
编程语言
- 机器语言 机器语言由二进制编码组成,它是计算机唯一可以直接识别和执行的语言,
- 汇编语言 汇编语言是用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。汇编语言程序 必须经过汇编操作,转换为机器语言后,才能在计算机硬件上执行。
- 高级语言 高级语言(如C、C++、Java等)程序需要先经过编译程序编译成汇编语言程序,再经过汇编操作 成为机器语言程序。高级语言程序也可直接通过解释的方式“翻译”成机器语言程序。
- 编译型语言:C、C++、Java是编译型语言,他们需要编译编译成汇编程序,再经过汇编操作汇编成机器语言程序再进行执行。
- 解释型语言:Python、JavaScript是解释型语言,他们可以通过解释器直接逐句翻译成机器语言程序 由于计算机无法直接理解和执行高级语言程序,因此需要将高级语言程序转换为机器语言程序
计算机硬件的基本结构
冯·诺依曼计算机的主要特点如下
构成程序的指令和数据均采用二进制表示。
指令和数据存放在存储器中,按地址访问。
指令在存储器中按顺序存放。一般情况下,指令是顺序执行的。
指令由操作码和地址码组成: 操作码用来表示执行何种操作。 地址码用来表示操作数在存储器中的位置,
机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成。
计算机硬件由运算器、控制器、存储器、输入设备/输出设备5大部件组成。
存储器:分为主存储器和辅助存储器 主存储器:用于存放程序和数据,可以直接与CPU交换信息,又称为内存储器,简称内存或主存 辅助存储器:用于帮助主存存储更多的信息,又称为外部存储器,简称外存或辅存。辅存中的信息必须调入主存后才能被CPU访问
运算器:完成对信息或数据的处理和运算,如算数或逻辑运算
控制器:完成对计算机个部件协同运行的指挥控制,即保证指令按预定的次序执行,保障每一条指令按规定的执行步骤正确执行,还要处理各项紧急事件
输入设备:用来输入原始数据和程序,如键盘鼠标
输出设备:用来输出计算机处理结果,如显示器和打印机
冯诺依曼计算机的结构以运算器为核心
但运算器的处理速度是非常快的,输入输出设备对数据的传输和处理是非常缓慢的,所以以运算器作为核心的时候(经典冯诺依曼架构),运算器直接和输入输出设备进行交互,运算器大多数时间都是空闲的,等待输入设备的响应,因此极大的拖累了它的性能。而主存储器的性能是介于运算器和输入输出设备之间的,因此现大都采用以存储器为核心的现代计算机结构
现代计算机的结构以存储器为核心 由于运算器和控制器在逻辑关系和电路结构上联系十分紧密,尤其在大规模集成电路制作工艺出现后,这两大部件往往制作在同一芯片上,因此,通常将它们合起来统称为中央处理器(CentralProcessingUnit),简称CPU。把输入设备与输出设备简称为I/O设备(Input/Outputequipment)。 CPU包含ALU(Arithmetic Logic Unit)算术逻辑单元,用来完成算术逻辑运算 和CU(Control Unit)控制单元,用来解释存储器中的指令,并发出各种操作命令来执行指令 这样,现代计算机可认为由三大部分组成:CPU、I0设备及主存储器(MainMemory,MM)。CPU与主存储器合起来又可称为主机, I/O设备叫作外部设备。
软硬件的关系
软硬件的逻辑功能等价性 在特定条件下,用软件实现的逻辑功能也可以通过硬件电路来实现,反之亦然。 对于一些特定的计算或控制任务,可以选择将其使用软件编程来实现,也可以选择设计专用硬件电路来实现而两者的结果将在功能上等效。 软件和硬件的逻辑功能等价性是计算机科学中的一个重要概念,也是计算机体系结构和工程中的基本原则之一 当选择在软件层面实现某些逻辑功能时,这通常意味着使用通用处理器(例如CPU)来执行程序; 而当选择在硬件层面实现这些逻辑功能时,这通常意味着使用专用的硬件电路,例如现场可编程门阵列FPGA(Field Programmable Gate Array)或专用集成电路ASIC(Application Specific Integrated Circuit)技术。
软件实现 | 硬件实现 | |
---|---|---|
性能与速度 | 性能和速度弱于硬件实现 | 更高的性能和更快的响应时间 |
灵活性 | 相对容易地进行修改和更新 | 需要重新设计和制造 |
成本 | 开发软件相对便宜 | 开发和制造硬件比较昂贵 |
应用需求 | 有些任务更适合在软件层面完成,例如操作系统的功能 | 有些任务更适合在硬件层面完成例如高频交易系统 |
计算机多级层次结构
从用户的角度看,人们在操作系统提供的运行环境下,首先用高级语言编写程序(称为源程序),然后将源程序翻译成汇编语言程序,再将其翻译成机器能识别的机器语言程序(称为目标程序),最后用微程序解释每条机器指令。这样,就构成一个常见的计算机系统的5级层次结构
- 逻辑电路层:计算机硬件系统的底层,由逻辑门、寄存器等逻辑电路组成
- 微程序层:将一条机器指令编写成一个微程序。每个微程序包含若干条微指令,每条微指令对应一条或多条微操作。
- 指令集体系结构层ISA:定义了某计算机可执行的所有机器指令的集合,规定了对于每条机器指令计算机应执行什么操作,所处理的操作数应存放的位置以及操作数的类型等。
- 操作系统层:设计人员不仅要对操作系统的设计理论有比较深入的理解,还需要掌握县体机器的指令集和汇编语言以及适于编写操作系统软件的高级语言
- 汇编语言层:使用汇编语言进行编程。吉的每条语句都与机器语言的基条语中编语句对应,因此仍要求程序员对实际机器的内部组成和指令系统非常熟悉。
- 高级语言层:使用与机器无关的高级语言编程,无需掌握机器的底层技术细节,只要掌握某种高级语言的语法规则以及算法和数据结构等方面的知识进行编程。
简单来说,虚拟机器就是由软件实现的机器
存储程序思想
存储程序的基本思想就是将程序和数据一样存放再主存中,运行时通过地址访问程序的内容,解析出对应的指令进行执行 指令包括操作码和地址码,操作码描述的是进行什么样的操作,地址码描述的是需要操作的输出在主存中的地址 寄存器PC程序计数器其中保存了下一条要执行指令的地址(如果是刚开始执行则保存第一条指令的地址),当执行时执行完第一条指令,寄存器中的地址就会移动一个偏移量从而保存下一条指令的地址。如果是跳转语句(如:if、while、goto)相当于操作码是一个跳转指令,指明了跳转到哪个位置(地址码指向的地址)
计算机硬件组成细化
运算器
- ACC(Accumulator)累加器
- MQ(Multiplier-Quotient Register)乘商寄存器
- X操作数寄存器 以四则运算为例,介绍当ALU进行计算时其他寄存器所起到的作用
ALU算术逻辑单元 | 加 | 减 | 乘 | 除 |
---|---|---|---|---|
ACC累加器 | 被加数 和 | 被减数 差 | 乘积高位 | 被除数 余数 |
MQ乘商寄存器 | 乘数 乘积低位 | 商 | ||
X操作数寄存器 | 加数 | 减数 | 被乘数 | 除数 |
存储器
由:
- 存储体 存储体由很多个存储单元组成 每个存储单元由若于个存储元件组成 每个存储元件能存储一位二进制数“0”或“1” 一个存储单元中可存储一串二进制信息,称这串二进制信息为一个存储字,这串二进制信息的位数称为存储字长(可以是8位、16位或32位等)。 给每个存储单元都赋予一个编号,称为存储单元的地址。
- 存储器地址寄存器MAR(Memory Address Register) 存储器地址寄存器MAR,用来存放欲访问的存储单元的地址。 MAR的位数(长度)决定了存储单元的数量。
- 存储器数据寄存器MDR(Memory Data Register) 存储器数据寄存器MDR,用来存放从存储体的某个存储单元取出的信息或者准备往某个存储单元存入的信息。 MDR的位数(长度),与存储字长相等。
主存(内存)的这种按存储单元的地址来实现对其写入和读取的存取操作,需要在CPU中的控制器的控制下进行。
控制器
- 控制器是计算机的神经中枢,由它指挥各部件自动、协调地工作。 控制从主存中读取一条指令,称为取指过程(阶段)。 对指令进行分析,指出该指令要完成何种操作,并按寻址特征指明操作数的地址,称为分析过程(阶段) 根据指令的操作码和操作数所在的地址完成某种操作,称为执行过程(阶段)。
- 程序计数器PC用来存放当前欲执行指令的地址 PC与MAR之间有一条直接通路 PC自动形成下一条指令的地址(自动+1功能)
- 指令寄存器IR用来存放当前的指令 IR的内容来自MDR。 IR中的操作码(用OP(IR)表示)会送至CU(用OP(IR)→CU表示),用来分析指令 IR中的地址码(用Ad(IR)表示)作为操作数的地址送至MAR(用Ad(IR)→MAR表示),用来从内存中取操作数。
- 控制单元CU用来分析当前指令所需完成的操作,并发出各种位操作命令序列,用以控制所有被控对象
机器指令简介 机器指令由6比特的操作码和10比特的地址码构成 操作码表示机器所执行的各种操作,如:取数、存数、加、减、乘、除等 地址码表示参加运算的数在内存中的位置(地址)
软硬件与计算机系统性能的关系
计算机系统的性能指标涵盖了硬件和软件两个层面,它们之间密切相关。优化硬件可以提供更强大的计算和传输能力,而优化软件可以更有效地利用这些硬件资源,从而共同实现更好的系统性能。正确的硬件选择可以为软件提供更好的执行环境,反之亦然。
基本性能指标
机器字长
机器字长是指CPU一次能够处理的二进制数据的位数,也就是构成二进制数据的比特(bit,简写为b)数量 机器字长与CPU内部用于整数运算的ALU的位数以及通用寄存器的宽度相等。机器字长对计算机系统性能的主要影响如下: 字长越长,数的表示范围就越大、精度也越高。 字长越长,计算精度也越高。 字长还会影响计算速度。 随着硬件技术的发展,计算机的字长已经从早期的8位逐渐增加到16位、32位、64位甚至更高。
主存容量
主存容量是指主存储器(内存)能够存储的最大信息量 假设主存包含M个存储单元,每个存储单元可存储N个二进制位,可以通过下式计算主存容量: 主存容量=NxM(位或b) 增加主存(内存)容量可以减少程序运行期间对辅存(外存)的访问由于访问内存的速度远大于访问外存的速度,因此可以提高程序的执行速度,进而提高计算机系统的性能
吞吐量
吞吐量是指计算机系统在单位时间内能够处理的信息量 影响吞吐量的主要因素如下: CPU的处理能力。 内存(主存)的访问速度。 外存(辅存,例如硬盘)的访问速度。
响应时间
响应时间是指从向计算机系统提交作业开始,,到系统完成作业为止所需要的时间
响应时间
- CPU时间 CPU执行时间:执行用户程序本身所花费的CPU时间 系统CPU时间:为执行程序而花费在操作系统上的时间
- 其他时间 用户访问内存(主存)、外存(辅存)其他外部设备所花费的时间 很难精确区分一个程序执行过程中的CPU执行时间和系统CPU时间,在没有特别说明的情况下,基于CPU执行时间进行计算机性能评价。
与运算速度相关的性能指标
CPU时钟频率和时钟周期
计算机执行一条指令的过程:取指、分析、执行 上述过程涉及多个步骤,每个步骤都需要特定的控制信号进行控制 控制信号的发出时机、持续时间等都需要相应的定时信号来调控
CPU时钟信号是一个基本定时信号,它是一种固定频率的脉冲信号,用于驱动计算机内部各组件协调工作 这种脉冲信号的频率被称为CPU时钟频率(Clock Rate),基本单位为赫兹 CPU时钟周期(Clock Cycle或Clock Tick,也可称为clock或tick)是CPU时钟频率的倒数,基本单位为秒 对于同类型的计算机,同一指令执行所需的CPU时钟周期的数量是一样的,因此CPU的时钟频率越高,该指令的执行速度就越快。
CPI
CPI(Cycles Per Instruction)的意思是执行一条指令所需要的时钟周期数量 由于不同指令的功能不同,即使功能相同的指令还可能有不同的寻址方式,因此每条指令执行所需的时钟周期数量也可能不同。 针对一条指令、一类指令、一个程序,它们各自CPI的含义如下: 一条指令的CP1:该指令执行所需要的时钟周期数量。 一类指令(例如算术运算类指令)的CP:构成该类指令的所有指令执行所需要时钟周期数量的平均值。 一个程序的CPI:构成该程序的所有指令执行所需要时钟周期数量的平均值。 CPI=程序所包含的指令数量程序执行所需时钟周期数量
如果知道某个程序中共有n类不同类型的指令、每类指令的CPI(用CPIi表示)、每类指令的数量在程序所包含的指令数量中所占的比例(用Pi表示),则该程序的CPI可用下式计算: CPI=∑i=1n(CPIi×Pi)
CPU执行时间
CPU执行时间是指真正用于用户程序的执行时间,而不包括为执行用户程序而花费在操作系统、访问主存(内存)、访问辅存(外存)、访问外部设备上的时间。 CPU执行时间=程序执行所需时钟周期数量×时钟周期=时钟频率程序执行所需时钟周期数量 由CPI=程序所包含的指令数量程序执行所需时钟周期数量 可得CPU执行时间=(CPI×程序所包含的指令数量)×时钟周期=时钟频率(CPI×程序所包含的指令数量)
IPC
IPC(Instructions Perhaps Cycle)每个时钟周期能够执行的指令数量 IPC是CPI的倒数,它与CPU架构、指令集、指令流水线技术等密切相关 由于指令流水线技术以及多喝技术的发展,目前IPC的值已经可以大于1了
MIPS
MIPS(Million Instructions Per Second)每秒执行多少百万条指令 MIPS=106CPU执行时间程序是所包含的指令数量 由CPU执行时间=时钟频率(CPI×程序所包含的指令数量) 得MIPS=106CPI时钟频率
MFLOPS
MFLOPS(Milion Floating-Point Operations Per Second)的意思是每秒执行多少百万次浮点运算 MFLOPS=106测试程序的执行时间浮点运算次数 MFLOPS不能全面反映计算机系统的性能。MFLOPS仅反映浮点运算速度,其值与所使用的测试程序相关不同测试程序中包含的浮点运算量不同,测试得到的结果也不相同
基准程序(Benchmark)是一组特定的程序,专门用于评测计算机的性能。 这些程序能够有效地模拟计算机在处理实际任务时的表现。 在不同计算机上运行同样的基准程序,通过比较各计算机运行基准程序的时间,从而评测它们各自的性能。 不同基准程序的评测重点不同,例如CPU性能、图形性能、存储性能、浮点数计算性能、并行计算性能等。 目前国际上流行的基准程序主要有SPEC、Linpack、Dhrystone、Whetstone、NPB等,
汉字的编码
都是16进制 国标码=区位码+2020 机内码=国标码+8080 机内码=区位码+A0A0
贡献者
版权所有
版权归属:PinkDopeyBug