王道计组:第一章 计算机系统概述

1.0 计算机组成原理

硬件只能识别二进制数0/1。用低/高电平来表示0/1。

1.1计算机发展历程

1.1.1计算机硬件的发展

1946年,第一台电子数学计算机:ENIAC(艾尼亚克)。

计算机的四代变化:

电子管时代→晶体管时代→中小规模集成电路时代→超大规模集成电路时代

计算机元件的更新换代:

摩尔定律:当价格不变时,集成电路上可容纳的晶体管数量,约每隔18个月便会增加一倍,性能也将提升一倍。

半导体存储器的发展:1970年,仙童半导体公司生产出第一个较大容量的半导体存储器,至今,半导体存储器经历了11代:单芯片1KB、4KB、16KB、64KB、256KB、1MB、4MB、16MB、64MB、256MB、1GB……

微处理器的发展:

微型计算机的发展是以微处理器技术为标志的。

1.1.2计算机软件的发展

机器语言→汇编语言→高级语言

#其中高级语言的发展真正促进了软件的发展,它经历了从科学计算和工程计算的FORTRAN、结构化程序设计的PASCAL到面向对象的C++和适应网络环境的Java。

1.2计算机系统层次结构

1.2.1计算机系统的组成

硬件系统和软件系统共同构成了一个完整的计算机系统。硬件是指有形的物理设备,是计算机系统中实际物理装置的总称。软件是指在硬件上运行的程序和相关的数据及文档。

对某一功能而言,其既可以用软件实现,又可以用硬件实现,则称为软硬件在逻辑功能上是等价的。

#在设计计算机系统时,要进行软/硬件的功能分配,通常来说,一个功能若使用较为频繁且用硬件实现的成本较为理想,使用硬件解决可以提高效率。

1.2.2计算机硬件

1.冯·诺依曼机基本思想

早期冯诺依曼机以运算器为中心。I/O设备与存储器之间的数据传送通过运算器完成。

现代计算机以存储器为中心。

冯·诺依曼机特点:

  1. 采用“存储程序”的工作方式。
  2. 计算机硬件系统由运算器、存储器、控制器、输入设备和输出设备5大部分组成。
  3. 指令和数据以同等地位存储在存储器中,形式上没有区别,但计算器能区分它们。可按地址寻访。
  4. 指令和数据均用二进制代码表示。指令由操作码和地址码组成,操作码指出操作的类型,地址码指出操作数的地址。
  5. 以运算器为中心。I/O设备与存储器之间的数据传送通过运算器完成。(现在一般以存储器为中心)

“存储程序”的基本思想:将事先编制好的程序和原始数据送入主存后才能执行,一旦程序被启动执行,就无须操作人员的干预,计算机会自动逐条执行指令,直至程序执行结束。

按此原理,计算机应具有五大功能:数据传送功能、数据存储功能、数据处理功能、操作控制功能、操作判断功能。

2.计算机的功能部件

  1. 输入设备
  2. 输出设备
  3. 存储器
    1. 存储器分为主存储器(又称内存储器)和辅助存储器(又称为外存储器)。CPU能够直接访问的存储器是主存储器。辅助存储器用于帮助主存储器记忆更多的信息,辅助存储器中的信息必须调入主存后,才能为CPU所访问。
    2. 主存储器的工作方式是按存储单元的地址进行存取,这种存取方式称为按地址存取方式。
    3. 主存储器逻辑图
      1. 存储体存放二进制信息,地址寄存器(MAR)存放访存地址,经过地址译码后找到所选的存储单元。数据寄码器(MDR)用于暂存要从存储器中读或写的信息,时序控制逻辑用于产生存储器操作所需的各种时序信号。
      2. 存储体由许多存储单元组成,每个存储单元包含若干存储元件,每个存储元件存储一位二进制代码0或1。因此存储单元可以存储一串二进制代码,称这串代码为存储字,称这串代码的位数为存储字长,存储字长可以是1B(8bit)或是字节的偶数倍。
      3. MAR用于寻址,其位数对应着存储单元的个数,如MAR为10位,则有210=1024个存储单元,记为1K。MAR的长度与PC(程序计数器)的长度相等。

#MAR(Memory Address Register,存储器地址寄存器)用于存储内存单元的地址。当MAR为10位时,它可以表示2^10个不同的地址,即1024个地址。这里的1024是2的10次方,也就是1K(Kilo,千)。因此,我们用1K来表示这1024个存储单元。

  1. MDR的位数和存储字长相等,一般为字节的2次幂的整数倍。

#MDR(Memory Data Register,存储器数据寄存器)用于存储从内存中读取的数据。MDR的位数和存储字长相等,意味着MDR可以一次读取或写入一个存储单元的数据。

存储字长是指一个存储单元可以存储的数据位数。例如,如果存储字长为8位(即一个字节),那么一个存储单元可以存储8位的数据。

MDR的位数一般为字节的2次幂的整数倍,这是因为计算机中的数据通常以字节为单位进行存储和传输。例如,1字节(8位)是最小的单位,2字节(16位)、4字节(32位)等都是2的整数次幂倍。因此,为了方便数据的读写操作,MDR的位数也设计成与存储字长相对应的2的整数次幂倍。

#用菜鸟驿站的例子可以很好的解释CPU读存储体内数据的操作,但是写操作就需要分布给MAR和MDR提供地址和数据。

#“存储字”指的是存储单元内的二进制内容。

#注意字(word)不是固定的,取决于具体的硬件设备。

#注意字和字节的区别;注意字节(Byte)和位(bit)的区别,1B=8b

4.运算器

  1. 运算器是计算机的执行部件,用于进行算术运算和逻辑运算。算术运算是按算术运算规则进行的运算,如加、减、乘、除;逻辑运算包括与、或、非、异或、比较、移位等运算。
  2. 运算器的核心是算术逻辑单元(ALU
  3. ACC/MQ/X三个寄存器是必备的。

5.控制器

  1. 控制器的核心部件是CU(控制单元)。
  1. 控制器是计算机的指挥中心。由程序计数器(PC)、指令寄存器(IR)和控制单元(CU)组成。
  2. PC用于存放当前欲执行指令的地址,具有自动加1的功能(这里的“1”指一条指令的长度),即可自动形成下一条指令的地址,它与主存的MAR之间有一条直接通路。
  3. IR用来存放当前的指令,其内容来自主存的MDR。指令中的操作码OP(IR)送至CU,用以分析指令并发出各种微操命令序列;而地址码Ad(IR)送往MAR,用以取操作数。

一般将运算器和控制器集成到同一个芯片上,称为中央处理器(CPU)。CPU和主存储器共同构成主机,而除主机外的其他硬件装置(外存、I/O设备等)统称为外部设备,简称外设。

CPU和主存之间通过一组总线相连,总线中有地址、控制和数据3组信号线。MAR中的地址信息会直接送到地址线上,用于指向读/写操作的主存存储单元;控制线中有读/写信号线,指出数据是从CPU写入主存还是从主存读出到CPU,根据是读操作还是写操作来控制将MDR中的数据是直接送到数据线上还是将数据线上的数据收到MDR中。

图中从控制器送出的虚线就是控制信号,可以控制如何修改PC以得到下一条指令的地址,可以控制ALU执行什么运算,可以控制主存是进行读操作还是写操作(读/写控制信号)。

CPU包括ALU、通用寄存器组GPRs、标志寄存器、控制器、指令寄存器IR、程序计数器PC、存储器地址寄存器MAR和存储器数据寄存器MDR。

3.现代计算机结构

辅存属于I/O设备。我们平常使用的APP就是在辅存当中,只有使用时在将APP的相关程序传输到主存中。

#区别日常生活中的主机和这里主机的概念,这里主机=CPU+主存。

1.2.3计算机软件

1、系统软件和应用软件

系统软件是一组保证计算机系统高效、正确运行的基础软件,通常作为系统资源提供给用户使用。主要有操作系统(OS)、数据库管理系统(DBMS)、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务性程序等。

应用软件是指用户为解决某个应用领域的各类问题而编制的程序,如各种科学计算类程序、工程设计类程序、数据统计与处理程序等。

2、三个级别的语言

机器语言:又称二进制代码语言。机器语言是计算机唯一可以直接识别和执行的语言。

汇编语言:汇编语言用英文单词或其缩写代替二进制的指令代码。使用汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译,将其转换为机器语言程序后,才能在计算机的硬件系统上运行。

高级语言:高级语言需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或直接由高级语言程序翻译成机器语言程序。(#高级语言→机器语言,ex:python 解释器  脚本语言)

3.软件和硬件具有逻辑功能等价性

1.2.4 计算机系统的层次结构

#目前不存在统一的分层标准

在高级语言之上,还可以有应用程序层,由解决实际问题的处理程序组成,如文字处理软件、多媒体处理软件和办公自动软件等。

没有配备软件的纯硬件系统称为裸机。第3层~第5层称为虚拟机,简单来说就是软件实现的机器。

软件和硬件之间的界面就是指令集体系结构(ISA),ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,以及所处理的操作数存放的地址空间和操作数类型。所有ISA是指软件能感知到的部分,也称软件可见部分。

1.2.5 计算机系统的工作原理

1.“存储程序”的工作方式

一个程序的执行就是周而复始地执行一条一条指令的过程,每条指令的执行过程包括:从主存取指令、对指令进行译码、计算下条指令地址、取操作数并执行、将结果送回存储器。

2.从源程序到可执行文件

以UNIX系统中的GCC编译器为例:

预处理→编译→汇编→链接

预处理阶段:预处理器(cpp)对源程序中以字符#开头的命令进行处理,例如将#include命令后面的.h文件内容插入程序文件。

链接阶段:链接器(ld)将多个可重定位目标文件和标准库函数合并为一个可执行目标文件,或可执行文件。

3.程序执行过程的描述

如图,shell程序将用户从键盘输入的每个字符逐一读入CPU寄存器(对应①),然后保存到主存储器中,在主存的缓冲区形成字符串“./hello”(对应②)。接收到enter键时,shell调出操作系统的内核程序,由内核来加载磁盘上的可执行文件hello到主存中(对于③)。内核加载完可执行文件中的代码和数据(这里是字符串“hello,world!\n”)后,将hello的第一条指令的地址送至PC,CPU随后开始执行hello程序,它将已加载到主存的字符串“hello,world!\n”中的每个字符从主存取到CPU的寄存器中(对应④),然后将CPU寄存器中的字符送到显示器(对应⑤)。由此可见,程序的执行过程就是数据在CPU、主存储器和I/0设备之间流动的过程,所有数据的流动都是通过总线、I/O接口等进行的。

  1. 指令执行过程的描述

以取数指令(送至运算器的ACC中)为例:

1)取指令:PC→MAR→M→MDR→IR

根据PC取指令到IR。将PC的内容送MAR,MAR中的内容直接送地址线,同时控制器将读信号送读/写信号线,主存根据地址线上的地址和读信号,从指定存储单元读出指令,送到数据线上,MDR从数据线接收指令信息,并传送到IR中。

2)分析指令:OP(IR)→CU

指令译码并送出控制信号。控制器根据IR中指令的操作码,生成相应的控制信号,送到不同的执行部件。在本例中,IR中是取数指令,因此读控制信号被送到总线的控制线上。

3)执行指令:Ad(IR)→MAR→M→MDR→ACC

取数操作。将IR中指令的地址码送MAR,MAR中的内容送地址线,同时控制器将读信号送读/写信号线,从主存中读出操作数,并通过数据线送至MDR,再传送到ACC中。

每取完一条指令,还须为取下条指令做准备,计算下条指令的地址,即(PC)+1→PC。

1.2.6 习题知识点

  • CPU区分指令和数据的依据是:指令周期的不同阶段。
  • 冯·诺依曼机最根本的特征是采用“存储程序”的原理,基本工作方式是控制流驱动方式。
  • 软件和硬件具有逻辑功能上的等价性,硬件实现具有更高的执行速度,软件实现具有更好的灵活性。
  • IR存放当前执行的指令代码,PC存放下一条指令的地址。MAR用来存放欲访问的存储单元地址,MDR存放从存储单元取来的数据。
  • 在CPU中,PC用来跟踪下一条要执行的指令在主存储器中的地址。
  • 地址译码器是主存的构成部分,不属于CPU。
  • MAR(地址寄存器)和MDR(数据寄存器)虽然从逻辑上一般属于主存,但现代计算机通常把MAR、MDR也集成在CPU中。
  • 地址寄存器(MAR)存放访存地址,因此位数与地址码长度相同。数据寄存器(MDR)用于暂存要从存储器中读或写的信息,因此位数与存储字长相同。
  • 运算器的核心部分是算术逻辑运算单元(ALU)。地址寄存器位于CPU内,但并未集成到运算器与控制器中。地址寄存器用来保存当前CPU所访问的内存单元的地址。由于内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为之。
  • 寄存器在CPU内部,速度最快。Cache采用高速的SRAM制作,而内存常用DRAM制作,其速度较Cache慢。
  • 计算机只能从主存中取指令与操作数,不能直接与外存交换数据。
  • 编译程序是先完整编译后运行的程序,如C、C++等;解释程序是一句一句翻译且边翻译边执行的程序,如JavaScript、python等。由于解释程序要边翻译成机器语言边执行,因此一般速度较编译程序慢。为增加对该过程的理解,附C语言编译链接的过程:
  • 机器语言是计算机唯一可以直接执行的语言,汇编语言用助记符编写,以便于记忆。而正则语言是编译原理中符合正则文法的语言。
  • 全面代表计算机性能的是实际软件的运行情况。
  • 系列机的基本特性是指令系统向后兼容。向后兼容指的是时间上向后兼容,即新机器兼容使用以前机器的指令系统。
  • CPU中由运算器和控制器两个部件组成,而两个部件中都有寄存器。
  • 数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员构成,其中数据库管理系统是系统程序。
  • 相联存储器既可以按地址寻址又可以按内容(通常是某些字段)寻址,为与传统存储器区别,又称为内容寻址的存储器。
  • 虽然指令和数据都以二进制形式存放在存储器中,但CPU可以根据指令周期的不同阶段来区分是指令还是数据,通常在去指阶段取出的是指令,在执行阶段取出的是数据。
  • 翻译程序是指把高级语言源程序转换成机器语言程序(目标代码)的软件。翻译程序有两种:一种是编译程序,它将高级语言源程序一次全部翻译成目标程序。另一种是解释程序,它将源程序的一条语句翻译成对应的机器目标代码,并立即执行,翻译一句执行一句,并且不会生成目标程序。汇编程序也是一种翻译程序,它把汇编语言源程序翻译为机器语言程序。
  • 在实际的高级语言编译过程中,可能需要先将高级语言转换为汇编语言,然后再将其转换为机器语言。这整个的过程称为编译。所以,编译程序的核心是编译,而汇编可以被视为编译的一个子过程或组成部分,但不是所有编译过程都包含汇编。
  • 数据总线是计算机硬件系统中用于传输数据的通道,它是实现计算机各部件之间数据传输和控制的重要手段。数据总线通常由一组并行的导线组成,每个导线代表一个位。数据总线的宽度(即导线的数量)决定了它可以一次性传输的数据位数。例如,8位宽的数据总线可以一次性传输8位的数据。
  • 汇编语言本质上就是助记符,与机器语言(二进制代码)一一对应。
  • 寄存器是中央处理器内的组成部分,主要功能是存储二进制代码。它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,因此存放n位二进制代码的寄存器,需要用n个触发器来构成。根据功能的不同,寄存器可以被分为基本寄存器和移位寄存器两大类。寄存器具有有限的存储容量,但存取速度快,非常适用于暂存指令、数据和地址。然而需要注意的是,与存储器、RAM和ROM等存储设备相比,寄存器的容量最小,速度最快,但数据在断电后会丢失。

1.3 计算机的性能指标

1.3.1计算机的主要性能指标

主存容量:

主存容量是指主存储器所能存储信息的最大容量,通常以字节来衡量,也可用字数×字长(如512K×16位)来表示存储容量。其中,MAR的位数反映了存储单元的个数,MDR的位数反映了存储单元的字长。例如,MAR为16位,表示216=65536,即此存储体内有65536个存储单元(可称为64K内存,1K=1024),若MDR为32位,表示存储容量为64K×32位。

#注意描述存储容量、文件大小等时,K、M、G、T通常用2的幂次表示,如1Kb=210b;在描述速率、频率等时,k、M、G、T通常用10的幂次表示,如1kb/s=103b/s。通常前者用大写的K,后者用小写的k,但其他前缀均为大写,表示的含义取决于所用的场景。

#对于一个程序或一台机器来说,其CPI指该程序或该机器指令集中的所有指令执行所需的平均时钟周期数,这里的CPI是一个平均数。

#基准程序执行得越快说明机器性能越好吗?

基准程序中的语句存在频度差异,运行结果也不能完全说明问题。

1.3.2 几个专业术语

  • 系列机:具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列。
  • 固件:将程序固化在ROM中组成的部件称为固件。固件是一种具有软件特性的硬件,吸收了软/硬件各自的优点,其执行速度快于软件,灵活性优于硬件,是软/硬件结合的产物。例如,目前操作系统已实现了部分固化(把软件永恒地存储于ROM中)。

1.3.3 习题知识点

  • 机器字长、指令字长、存储字长,三者在数值上可以相等也可以不等,视不同机器而定。机器字长,也就是计算机一次性能处理的二进制数的长度。一般情况下可以通过寄存器的位数来判断机器字长。存储字长,也就是一个存储单元中的二进制代码的位数,存储字长等于MDR的位数,而数据字长是数据总线一次能并行传送信息的位数,它可以不等于MDR的位数。
  • 操作系统的位数是操作系统可寻址的位数,它与机器字长不同。
  • 汇编程序员可以通过JMP指令来设置PC的值。状态寄存器、通用寄存器只有为汇编程序员可见,才能实现编程,而IR、MAR、MDR是CPU的内部工作寄存器,对程序员均不可见。
  • 时钟周期是计算机操作的最小单位时间。另外,CPU周期又称为机器周期,它由多个时钟周期组成。
  • CPI是执行一条指令所需要的时钟周期数,系统结构、指令集、计算机组织都会影响CPI,而时钟频率并不会影响CPI,但可加快指令的执行速度。
  • 提高CPU主频、扩大主存容量对性能的提升是有限度的。采用并行技术是实现高性能计算的重要途径,现今超级计算机均采用多处理器来增强并行处理能力。
  • 兼容通常指在同一系列的不同型号计算机间,而不能在任何计算机之间通用。
  • 计算机的机器字长是指数据运算的基本单位长度。
  • 寄存器由触发器构成。
  • 磁盘可以永久性存放数据和程序。
  • 计算机“运算速度”指标的含义是每秒能执行多少条指令。
  • IPC是CPI的倒数,即每个时钟周期执行的指令数。
  • 机器字长等于CPU内部用于整数运算的运算器位数和通用寄存器宽度。

1.4小结&常见问题&混淆知识点

CPU的运算速度要看CPU流水线上的各方面性能指标,如:架构、缓存、指令集、CPU的位数、Cache大小、主频等。

在计算机领域,透明指的是看不见的属性。与日常生活中的透明概念(公开、看得见)正好相反。

在CPU中,IR、MAR、MDR对各类程序员都是透明的。

计算机体系结构和计算机组成的区别和联系:

计算机体系结构指机器语言或汇编语言程序员所看得到的传统机器的属性,包括指令集、数据类型、存储器寻址技术等,大都属于抽象的属性。

计算机组成是指如何实现计算机体系结构所体现的属性,它包含对许多对程序员来说透明的硬件细节。

ex:指令系统属于结构的问题,但如何实现指令:如何取指令、如何分析指令、取操作数、如何运算等都属于组成的问题。

ex:一台机器是否具备乘法指令是一个结构的问题,但实现乘法指令采用什么方式则是一个组成的问题。

一般情况下,基准测试程序能够反映机器性能的好坏,但是,由于基准程序中的语句存在频度的差异,因此运行结果并不能完全说明问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值