# 计算机组成原理

这一章节,我们来了解一下计算机组成原理。

  • 计算机的发展历程
  • 计算机的硬件组成
  • 计算机的工作方式
  • 计算机的部件互联

# 计算机的发展历程

计算机从问世到现在不过 70 余年,已经改变了人们的工作和生活方式,甚至改变了社会结构,堪称 20 世纪最有影响力的发明。

# 第一代计算机

第一代计算机采用电子管作为基本器件,存储器采用声延迟线或磁鼓。

第一台计算机为 ENIAC,在 1946 年由美国宾夕法尼亚大学为美国国防弹道研究实验室设计和制造。ENAIC 采用十进制进行数据的标识和运算,每秒可进行 5000 多次加法运算。

  • 存储容量太小
    • 只能存放 20 个 10 进位十进制数
  • 编程使用线路连接方式
    • 每次解题都要人工改版开关状态及插拔电缆来编程。
  • 重量大,体积大
    • 重达 30t,占地 170 平方米
    • 使用 18000 多个电子管,耗电量高达 140kw

第一代计算机采用机器语言编程,尚无软件的概念,没有操作系统及高级语言,只有专业人员才能使用。

# 第二代计算机

第二代计算机采用晶体管作为基本器件,采用磁芯存储器。

20 世纪 50 年代末,由于计算机的主要器件采用晶体管,因而计算机的体积小、功耗低、速度快、可靠性高,而且价格不断下降。同时,计算机开始采用磁芯存储器,使计算机速度得到了进一步地提高。运算速度已达到每秒几万次 ~ 几十万次

第二代计算机的软甲有了较大的发展,出现了单道批处理操作系统和多种高级语言,如 FORTRAN、COBOL 等。计算机在狠毒哦领域、特别是科学计算领域有了较为广泛的应用。

# 第三代计算机

第三代计算机采用中小规模集成电路作为进本器件,仍采用磁芯存储器。

20 世纪 60 年代中期,微电子技术的诞生是计算机步入了集成电路时代。第三代计算机主要采用小规模集成电路(SSI)、中规模集成电路(MSI)作为基本器件,计算机的体积、功耗、价格进一步下降,而速度、可靠性有大幅度提高,运算速度在每秒数十万次 ~ 近百万次。

第三代计算机的软件中,出现了多道批处理操作系统和分时操作系统,数据库等新技术已得到广泛的应用。

# 第四代计算机

第四代计算机采用超大规模集成电路作为基本器件,采用半导体存储器。

20 世纪 70 难带初,伴随着微电子学的飞速发展,出现了大规模集成电路(VLI)、超大规模集成电路(VLSI),其集成度也从几千个晶体管/片,发展到上千万个晶体管/片。同时,半导体存储器取代了磁芯存储器,并不断向大容量、高速度发展,告诉缓存、虚拟存储器等技术相机出现,也进一步提高了存储器的性能。伴随着流水线、多处理机等并行技术的采用,计算机的运算速度已飞速提升,从 Inter 处理器的发展可见一斑。2010 年,中国的天河 1 号的运算速度已达到 2500 亿万次/s。

第四代计算记的一个显著特点是计算机的发展方向由统一走向了分裂,分别向大型、微型两个方向发展。微型计算机进入了几乎所有的行业,改变了人们的工作和生活方式。大型计算机则是一个国家的科技实力,经济实力,军事实力的象征

# 计算机的硬件组成(五大单元)

1946 年,数学家冯诺依曼提出了以存储程序为核心的计算机模型,该模型一直沿用至今。

冯诺依曼计算机由运算器控制器存储器输入设备和输出设备组成,其中,运算器和控制器常合称为中央处理器 CPU。

  • 输入单元:包括键盘、鼠标、卡片阅读机、扫描仪、手写板、触控屏幕等等一堆;
  • 主机部分:这个就是系统单元,被主机机壳保护住了,里面含有一堆板子、CPU 与主存储器等;
  • 输出单元:例如屏幕、打印机等等

# CPU的指令集

  • X86/X64指令集,用在电脑上
  • ARM指令集,用在手机上
  • MIPS指令集,用在服务器上
  • RISC指令集,国家专用一般做嵌入式、物联网、是一款简易指令集

# CPU的组成

  • 运算器-专门用来计算,用来干活的
  • 控制器-用来指挥的
  • 存储器-存储信息的 CPU是这么工作的

8086CPU内部结构图

# 运算器

运算器的主要功能是对信息或数据进行处理或运算,并暂存处理或运算结果。

  • 算数运算
    • ALU,处理整数型数据。
    • FPU,处理浮点型数据。
  • 寄存器
    • 为了保存计算结果,运算器中还包含了若干个寄存器。
    • 寄存器的存取速度比存储器要快得多。

# 控制器

控制器的主要功能是指挥和控制各部件协调工作,来实现程序的自动执行。

由于程序执行过程是循环的指令执行过程,为了实现循环,控制器中需要设置两个专用的寄存器,一个成为指令计数器(PC),用来存放循环变量的指令地址,告诉CPU该执行哪个指令。另一个成为指令寄存器(IR),用来存放指令的内容,即告诉计算机要干什么。因此取指令阶段总是用 指令计数器(PC) 的内容为地址去读存储器,所取的指令总是存放到 指令寄存器(IR) 中,供分析节点、执行阶段使用。

为了实现当前指令的功能,控制器中需要设置指令译码器(ID),用来分析 IR 中当前指令的操作类型及操作数信息,再由控制单元(CU)产生相应的部件控制信号,来控制相关变实现指令的功能。

  • 寄存器
    • PC,程序计数器。
    • IR,指令寄存器,存储指令内容。
  • 指令译码器,ID,分析 IR 中指令信息。
  • CU,控制单元,产生相应的部件控制信号,控制相关组件实现指令功能。

# 存储器

存储器的主要功能是存储信息,可以通过操作实现信息的写入和读出。

现代计算机中,存储器由主存、辅存构成,计算机硬件中的存储器通常指主存,而将辅存归类为一种外部设备。

  • 主存
  • 辅存

# 内存与指针

指针

  • 指针是用来保存内存地址的变量,所以指针不等于内存地址
  • 多级指针->最高2级指针
  • 引用是对指针的封装
  • 指针是可以进行计算的,但是只有假发和减法,加是向后移动一个单位(一个字节),减法是向前移动一个字节。
  • 地址是浮动的,所以指针自然也是变化的,但是引用不会变化,因为它是
  • 指针可以分为
    • 指向变量的指针
    • 指向指针的指针
    • 指向函数的指针 一级指针
//一级指针
int i = 10;
int *p = &i;
init **p1 = &p

1
2
3
4
5

二级指针

//二级指针
int i = 10;
int *p = &i;
init **p1 = &p
1
2
3
4
  • 1级指针指向变量的地址
  • n级指针指向 n-1 级指针地址

内存的动态分配

内存 描述 特性
栈区 是一个确定的常数(1~2M) 不同平台会有不同大小,超出会 提示stackoverflow 自动分配 ,自动释放
堆区 用于动态内存分配 手动分配和释放 , 可占 用80%内存
全局区或
静态区 在程序中明确被初始化的全局变量、静态变量(包括全局静态变量和局部静态变量)和常量数据(如字符串常量) 只初始化一次
程序代码区 代码区指令根据程序设计流程依次执行,对于顺序指令,则只会执行一次(每个进程),如果反复,则需要使用跳转指令,如果进行递归,则需要借助栈来实现。 代码区的指令中包括操作码和要操作的对象(或对象地址引用)

# 输入/输出设备

I/O 设备的主要功能是实现信息的输入和输出,以及外部媒体信息与内部二进制信息的格式变换。

常见的输入设备:

  • 鼠标
  • 键盘

常见的输出设备:

  • 显示器
  • 打印机

现代计算机中,通常将 I/O 设备、辅存合称为外部设备。通常,计算机硬件中,运算器、控制器、存储器只有一个,外设个数是可变的。

# 计算机的工作方式

冯诺依曼计算机采用存储程序工作方式。存储程序的基本思想是:程序和数据预先存放在存储器中,机器工作时,自动、逐条地从存储器中取出指令并执行。

因此,程序执行过程可以看做一个循环指令执行过程,循环变量为指令地址。其中,指令执行过程又可分为取指令、分析指令、执行指令三个阶段,当前指令由指令地址取得,并产生下调指令的指令地址。

计算机程序执行过程 CUP工作简图

指令的执行过程

  • 取指令(取指令及其周期)
    • 指令地址(在 PC 中)送到地址寄存器
    • 读主存,读出内容(指令代码)送入指令寄存器 IR
    • 形成下一条指令的地址并送到 PC 中
  • 执行指令
    • 操作数寻址(间址机器周期)
    • 操作通过运算器进行运算(执行及其周期)
  • 检查是否有中断请求(中断机器周期)

# 计算机的部件互联

将计算机的各大部件按照某种方式连接起来,就构成了计算机的硬件系统。现代计算机中,常采用总线方式实现各部件的互联。

总线(BUS)是设备间进行信息传输的一组公共信号线。总线上的设备通过地址(设备编号)来进行识别。

总线方式互联的优点是传输控制简单、可扩展性好。总线传输方法对所有设备适用,仅传输的目标地址不同而已,因而传输控制极为简单。

总线方式互联的缺点是需要分时进行信息传输。由于从先信号线是公用的,任何时候只能有一个设备处于接收状态,因此,同时只能进行一次信息传输,多次信息传输需要分时进行。

总线连接

Last Updated: 4/15/2020, 5:02:25 PM