计算机组成原理

文章目录

[1. 冯诺依曼模型](#1. 冯诺依曼模型)

[1.1 四个子系统](#1.1 四个子系统)

[1.2 存储程序概念](#1.2 存储程序概念)

[1.3 指令的顺序执行](#1.3 指令的顺序执行)

[2. 计算机组成部件](#2. 计算机组成部件)

[3. 中央处理单元CPU](#3. 中央处理单元CPU)

[4. 内存](#4. 内存)

[5. 输入/输出(I/O)系统](#5. 输入/输出(I/O)系统)

[6. 程序的执行](#6. 程序的执行)

[6.1 机器周期](#6.1 机器周期)

[6.2 输入/输出操作](#6.2 输入/输出操作)

[7. 体系结构](#7. 体系结构)

[7.1 CISC(复杂指令集计算机)](#7.1 CISC(复杂指令集计算机))

[72 RISC(精简指令集计算机)](#72 RISC(精简指令集计算机))

[7.3 流水线技术](#7.3 流水线技术)


1. 冯诺依曼模型

冯诺依曼模型由科学家约翰·冯·诺依曼提出,是现代计算机体系结构的基础。基于冯诺依曼模型建造的计算机在存储器(内存和寄存器)中存储数据和程序。由于程序和数据在逻辑上是相同的,因此程序也能存储在计算机的存储器中。

1.1 四个子系统

存储器

  • 功能:存储器用于保存计算机运行时需要的数据和指令。内存中的数据可以随时被处理器访问和修改。
  • 类型:包括主存(RAM)、只读存储器(ROM)和寄存器。
  • 重要性:存储器是计算机的核心组件,所有数据和指令都在这里存储和读取。
  • 操作:CPU通过地址总线指定存储位置,通过数据总线读取或写入数据。

算数逻辑单元(ALU)

  • 功能:ALU执行所有的算术和逻辑操作,如加减乘除、逻辑与或非、移位等。
  • 类型:包括加法器、乘法器、逻辑门等。
  • 重要性:ALU是计算机的计算核心,负责执行各种数据处理任务。
  • 操作:CPU将操作数送入ALU,通过控制单元发出相应指令,ALU进行计算并将结果存回寄存器或内存。

控制单元

  • 功能:控制单元解码和执行指令,协调存储器、ALU和I/O单元的工作。
  • 组成:包括程序计数器(PC)、指令寄存器(IR)、控制逻辑电路等。
  • 重要性:控制单元通过从存储器读取指令并解释执行,确保计算机按照预定的程序运行。
  • 操作:通过控制信号,控制单元决定各个部件的工作状态和操作顺序。

输入/输出单元(I/O)

  • 功能:I/O单元允许计算机与外部环境进行数据交换。
  • 组成:输入设备(键盘、鼠标等)和输出设备(显示器、打印机等)。
  • 重要性:I/O单元是计算机与外界交互的桥梁,负责接收外部数据和输出处理结果。
  • 操作:输入设备将外部数据送入计算机,输出设备将计算结果输出到外部。

1.2 存储程序概念

冯诺依曼模型的一个重要特征是"存储程序"概念,即程序也必须存储在存储器(内存)中。现代计算机的存储单元用于存储程序和数据,这意味着程序和数据应具有相同的格式。实际上,它们都是以位模式(0和1)存储在内存中。

  • 计算机启动过程

    • 当计算机启动时,首先从只读存储器(ROM)中读取启动程序(BIOS/UEFI),这个程序初始化硬件并加载操作系统。
    • 操作系统被加载到内存中,控制计算机的资源和提供应用程序的运行环境。
  • 程序执行过程

    • 应用程序的代码被加载到内存中。
    • CPU通过程序计数器(PC)获取指令地址,从内存中读取指令并执行。
    • 指令可能涉及数据操作,这些数据也存储在内存中,CPU通过地址总线访问这些数据进行计算。

1.3 指令的顺序执行

冯诺依曼模型中的程序由一组数量有限的指令组成,控制单元从内存中提取指令,解释指令,并逐条顺序执行。这意味着指令的执行是按程序中预定的顺序进行的,除非程序包含跳转或分支指令。

  • 指令顺序执行

    • 控制单元从内存中逐条提取指令,按序执行。
    • 每条指令包含操作码和操作数,控制单元负责解释这些指令,并协调其他组件执行相应的操作。
  • 内存结构

    • 内存分为两个部分:程序(包含一系列指令,如1+2, -3, *4, /5等。)和数据(包含若干数据值,如10, 40, 20, 3, 9)。
    • 程序部分存储要执行的指令,数据部分存储指令执行过程中需要操作的数据。
  • 程序执行过程

    • 取指令(Fetch):控制单元从内存的程序部分读取下一条要执行的指令,通常由程序计数器(PC)提供指令地址。
    • 解释指令(Decode):控制单元对读取到的指令进行解释,确定要执行的操作和操作数。
    • 执行指令(Execute):ALU或其他执行单元执行指令规定的操作,可能涉及从内存读取或写入数据。
    • 存储结果(Store):将指令执行的结果存储到内存或寄存器中。

示例分析:

假设有如下程序和数据:

  • 程序

|---|-------|
| 1 | 1 + 2 |
| 2 | -3 |
| 3 | *4 |
| 4 | /5 |

  • 数据

|---|----|
| 1 | 10 |
| 2 | 40 |
| 3 | 20 |
| 4 | 3 |
| 5 | 9 |

执行过程

  1. 取指令 :控制单元读取第一条指令1 + 2
  2. 解释指令:控制单元解释指令,确定执行加法操作。
  3. 执行指令 :ALU执行1 + 2,结果为3。
  4. 存储结果:将结果3存储在数据部分或寄存器中。

接着执行下一条指令:

  1. 取指令 :控制单元读取第二条指令-3
  2. 解释指令:确定执行减法操作。
  3. 执行指令:从上一步结果中减去3,得到结果0。
  4. 存储结果:将结果0存储。

继续依次执行* 4/ 5指令,最终结果为(10 + 40 - 20) * 3 / 9

2. 计算机组成部件

计算机的组成部件可以分为三个大类:中央处理单元(CPU),主存储器(内存),输入/输出子系统(I/O)。

中央处理单元(CPU)

  • 功能:CPU是计算机的核心部件,负责执行指令、处理数据和控制其他部件的操作。
  • 组成
    • 算数逻辑单元(ALU):负责执行算术和逻辑运算。
    • 寄存器:用于临时存储数据和指令。
    • 控制单元:负责从内存中提取指令,解释并执行指令,协调计算机各部件的工作。
  • 现代CPU:随着技术的发展,现代CPU集成了越来越多的功能,提高了计算机的性能和效率。例如,苹果的M1芯片不仅集成了CPU和GPU,还将内存集成其中,使得数据传输更加高效。集成度的提高使得计算机性能更强,功耗更低,适用于多种应用场景。

主存储器(内存)

  • 功能:内存用于存储正在执行的程序和数据。内存中的数据可以快速读取和写入,保证CPU能够高效地处理数据。
  • 类型:主要包括随机存取存储器(RAM)和只读存储器(ROM)。
  • 结构:内存通过数据总线、地址总线和控制总线与CPU进行通信。

输入/输出子系统(I/O)

  • 功能:I/O子系统负责计算机与外部环境的交互,包括数据的输入和输出。
  • 组成
    • 输入设备:如键盘、鼠标等,用于接收用户输入。
    • 输出设备:如显示器、打印机等,用于将计算结果输出给用户。
  • 控制器:每个I/O设备通过控制器与CPU和内存进行通信。

总线结构

总线是计算机内部各部件之间传输数据的通道,主要包括:

  • 数据总线:用于传输数据。
  • 地址总线:用于传输内存地址,确定数据的存储位置。
  • 控制总线:用于传输控制信号,协调各部件的操作。

3. 中央处理单元CPU

CPU是计算机的核心组件,负责执行数据运算和指令处理。它主要包括三个部分:算数逻辑单元(ALU)、控制单元和寄存器组。

3.1 CPU中的算数逻辑单元(ALU)

算数逻辑单元(ALU)是CPU中负责执行所有算术和逻辑运算的部分。ALU对输入的数据进行计算和逻辑操作,并将结果输出。

主要运算类型

算术运算

  • 整数运算:包括加法、减法、乘法和除法。
  • 浮点数运算:处理浮点数的加减运算。

位移运算

  • 逻辑移位:包括左移和右移,移位时空位用0填充。
  • 算术移位:保留符号位不变,左移或右移时符号位保持不变。

逻辑运算

  • 非(NOT):将二进制数据的每一位取反。
  • 与(AND):将两个二进制数据对应位同时为1时,结果为1,否则为0。
  • 或(OR):将两个二进制数据对应位有一个为1时,结果为1。
  • 异或(XOR):将两个二进制数据对应位不同,则结果为1,相同则为0。

3.2 CPU中的寄存器

寄存器是CPU内部用于临时存储数据的高速存储单元。它们具有非常快的读写速度,用于存储中间运算结果、当前指令和地址等。

主要类型

  • 数据存储寄存器
    • 保存运算的中间结果和数据。
  • 指令存储器(IR)
    • CPU从内存中逐条取出指令,并存储在指令存储器中,解释并执行指令。
  • 程序计数器(PC)
    • 保存当前正在执行的指令地址。当前指令执行完成后,计数器自动加1,指向下一条指令的内存地址。

3.3 CPU控制单元

控制单元负责控制和协调CPU内各个子系统的操作。它通过生成控制信号来管理数据流和指令执行过程,确保各个部分协同工作。

主要职责

  • 指令解码:解释从内存中取出的指令,并生成相应的控制信号。
  • 执行控制:控制ALU执行指定的算术和逻辑运算。
  • 数据流管理:管理寄存器和内存之间的数据传输。
  • 系统协调:协调CPU内部各部分以及CPU与其他硬件组件之间的工作。

4. 内存

内存是存储单元的集合,每个存储单元都有唯一的标识,称为地址。数据以"字"的形式在内存中传入传出,字可以是8位、16位、32位、64位等。如果字是8位,一般称为一个字节。

4.1 内存类型

主要有两种类型:随机存取存储器(RAM)和只读存储器(ROM)。

随机存取存储器(RAM)

  • 特点:系统断电后,信息(程序或数据)丢失。
  • 用途:用于存储计算机运行过程中需要处理的数据和程序。
  • 示例:在计算机运行时,操作系统和应用程序的数据会存储在RAM中,以便CPU快速访问和处理。

只读存储器(ROM)

  • 特点:系统断电数据不会丢失。ROM中的数据由制造商预先写入,用户只能读不能写。
  • 用途:常用于存储开机时运行的程序,例如系统引导程序。
  • 示例:计算机的BIOS/UEFI固件通常存储在ROM中,以便在系统启动时加载和运行。

固态硬盘(SSD)

  • 现代固态硬盘也可以写入数据,但系统盘通常不可以写入。固态硬盘常用来存储操作系统和应用程序,以提供快速读取和写入性能。

4.2 存储器的层次

存储器通常分为多个层次,从速度和容量上形成金字塔结构,从上到下,存储速度逐渐降低,容量逐渐增大:

  1. 寄存器(CPU中使用):最快速、最昂贵,容量最小。
  2. 高速缓冲存储器(Cache):存储数据的速度比内存快,比寄存器慢。容量较小,位于CPU和主存储器(内存)之间。
  3. 主存储器(内存):速度较慢,容量较大,用于存储程序和数据。

4.3 高速缓冲存储器

高速缓冲存储器(Cache)存储数据的速度比内存快,比寄存器慢。通常容量较小,位于CPU和主存储器(内存)之间。Cache用于临时存储经常访问的数据,以提高系统性能。

4.4 CPU和存储器的连接

CPU与主存储器之间通常通过总线进行连接,总线包括三组线路:数据总线、地址总线和控制总线。

数据总线

  • 功能:传输数据。由多根线组成,每根线每次传送1个位的数据。
  • 示例:如果计算机的字是32位,那么需要32根线的数据总线,以便同一时刻传送32位的数据。

地址总线

  • 功能:传输地址信息,用于访问存储器中的特定位置。
  • 示例:如果存储器的容量为2的n次方个字,那么地址总线需要n根线来传送n位的地址数据。

控制总线

  • 功能:传输控制信号,协调各部件的操作。
  • 示例:如果计算机有2的m次方条控制命令,那么控制总线就需要有m根线来传送这些控制信号。

5. 输入/输出(I/O)系统

输入/输出设备使计算机能够与外界进行通信,并在断电情况下存储程序和数据。I/O设备分为两大类:非存储设备和存储设备。

1. 非存储设备

  • 键盘鼠标显示器打印机

2. 存储设备(辅助存储设备)

  • 特点:数据存储便宜,断电后数据不丢失。
  • 种类
    • 磁介质:如硬盘、磁带等。
    • 光介质:如CD、DVD、蓝光光盘等。

3. I/O设备的连接

  • 输入/输出设备不能直接与CPU和内存的总线相连接

    • 原因:输入/输出设备与CPU和内存的本质不同,输入/输出设备是磁性或光学设备,而CPU和内存是电子设备。
    • 速度差异:输入/输出设备的数据读取速度远慢于CPU和内存,因此需要一个中介来处理这种差异,这个中介就是输入/输出控制器。
  • 输入/输出控制器

    • 功能:连接输入/输出设备到总线上,每一个输入/输出设备都有一个特定的控制器。
    • 作用:处理输入/输出设备与CPU和内存之间的数据传输和速度差异。
  • I/O设备的连接控制器

    • 功能:控制器清除了输入/输出设备与CPU及内存在本质上的障碍,确保数据的有效传输。
    • 类型
      • 串行控制器:只有一根数据线连接到设备上,数据按位顺序传输。
      • 并行控制器:有多根数据线连接到设备上,可以同时传输多个位的数据。
  • 常用控制器

    • SCSI(小型计算机系统接口):用于连接和传输数据到和来自外围设备。
    • 火线(FireWire):用于高速数据传输,常用于连接摄像机和外部硬盘。
    • USB(通用串行总线):广泛用于连接各种外围设备,如键盘、鼠标、存储设备等。
    • HDMI(高清多媒体接口):用于传输高清视频和音频信号,常用于连接显示器和电视。

I/O设备通过控制器连接到计算机总线,实现与CPU和内存的数据传输。控制器处理I/O设备与CPU和内存之间的本质差异,确保数据有效传输。串行控制器和并行控制器分别用于不同的数据传输需求,常用的控制器包括SCSI、火线、USB和HDMI。通过理解这些连接机制,可以更好地理解计算机系统与外部设备的交互原理。

**6.**程序的执行

通用计算机使用程序的一系列指令来处理数据,通过执行程序,将输入数据转换为输出数据。程序和数据都放在内存中。

6.1 机器周期

CPU利用重复的机器周期来执行程序中的指令,一步一条,从开始到结束。一个机器周期包括三个步骤:取指令、译码和执行。

  • 取指令

    • 步骤:CPU的控制单元命令系统将下一条将要执行的指令复制到CPU的指令寄存器中。
    • 细节:被复制的指令地址保存到程序计数器(PC)中,复制完成后,程序计数器自动加1,指向内存中的下一条指令。
  • 译码

    • 步骤:当指令置于指令寄存器(IR)后,该指令将由控制单元负责译码。
    • 细节:指令译码的结果是产生一系列系统可执行的二进制代码。
  • 执行

    • 步骤:指令译码完毕后,控制单元发送任务命令到CPU的某个部件。
    • 细节:例如,控制单元告知系统从内存中读取数据,或者进行算术运算。这就是执行阶段。

6.2 输入/输出操作

输入/输出操作是计算机与外部环境进行数据交换的过程。

  • 输入操作

    • 功能:将外部数据输入到计算机内存中。
    • 过程:例如,用户通过键盘输入数据,数据通过键盘控制器传送到内存。
  • 输出操作

    • 功能:将计算结果或其他数据输出到外部设备。
    • 过程:例如,计算机将处理结果通过显示器输出,显示器控制器负责将数据传输到显示器进行显示。

程序的执行是通过机器周期的重复操作来完成的,每个机器周期包括取指令、译码和执行三个步骤。通过控制单元协调,各个步骤顺序执行,使得计算机能够自动化处理数据并产生输出。输入/输出操作确保了计算机能够与外部环境进行有效的数据交换。理解这一流程,有助于深入了解计算机的工作原理和程序执行机制。

7. 体系结构

7.1 CISC(复杂指令集计算机)

设计策略:使用大量的指令,包括复杂指令。并且每个复杂任务对应一条指令,简化了程序设计。

优点

  • 程序设计更容易,因为复杂任务可以通过单一指令完成。
  • 程序员不需要编写大量的简单指令来实现复杂操作。

缺点

  • 指令集的复杂性导致CPU和控制单元的电路设计非常复杂。

优化方案

  • 程序在两个层面上运行,CPU不直接执行机器语言指令,而是执行被称为微操作的简单操作。
  • 复杂指令被转化为一系列简单操作后由CPU执行,这种使用微操作的程序设计被称为微程序设计。

应用:典型的CISC处理器是英特尔开发的奔腾系列CPU。

72 RISC(精简指令集计算机)

设计策略:使用少量的指令,完成最少的简单操作。强调指令集的简洁性和高效性。

优点

  • 指令集简洁,CPU和控制单元的设计更简单。
  • 通过减少指令集的复杂性,提高了指令执行的速度。

缺点

  • 程序设计相对困难,因为复杂操作需要由多条简单指令组合实现。

应用

  • RISC处理器在嵌入式系统、移动设备和服务器中广泛应用,例如ARM处理器。

7.3 流水线技术

概念:流水线技术通过将指令执行分为多个阶段(如取指令、译码和执行),实现多个指令的并行处理,提高了CPU的吞吐量。

工作原理

  • 早期计算机每条指令的三个阶段需要串行完成,即一条指令执行完毕后才开始下一条指令。
  • 现代计算机使用流水线技术,允许下一条指令在前一条指令完成前开始执行。例如,指令1的取指令阶段完成后,指令2可以开始其取指令阶段,而指令1进入译码阶段。

优势

  • 流水线技术显著提高了指令执行的效率和CPU的整体性能。
  • 通过并行处理多个指令的不同阶段,提高了CPU的吞吐量。
  • 无流水线:指令1执行完毕后,指令2才开始,依次类推,执行效率较低。
  • 有流水线:指令1的各阶段与指令2和指令3的各阶段交错进行,实现了指令的并行处理,提高了执行效率。

CISC和RISC是两种不同的计算机体系结构,各有优缺点。CISC通过复杂指令集简化程序设计,但导致CPU设计复杂;RISC通过简化指令集提高执行速度,但程序设计相对困难。流水线技术通过并行处理指令的不同阶段,显著提高了计算机的执行效率和性能。

相关推荐
憧憬一下2 天前
PCIe_Host驱动分析_地址映射
arm开发·嵌入式硬件·嵌入式·linux驱动开发·pci/pcie
YY_D_S_5 天前
【机组】概述精炼考点(冯诺依曼、层次结构、翻译语言、执行程序的过程、基本工作原理、运算器、控制器、存储器)
计算机组成原理·机组
aspirestro三水哥6 天前
Linux: 通过/proc/pid/stack查看程序卡在内核的什么地方
linux·运维·服务器·嵌入式
@启智森7 天前
【C语言】浮点数的原理、整型如何转换成浮点数
c语言·开发语言·嵌入式·float·int·浮点数
@启智森7 天前
【Uboot】Uboot启动流程分析
linux·c++·嵌入式·uboot·启动·底层
superiony8 天前
【计算机组成原理】实验二:通用寄存器单元实验
计算机组成原理·通用寄存器
不想写代码的我8 天前
基于ZYNQ-7000系列的FPGA学习笔记11——IP核之单端RAM读写
笔记·学习·fpga开发·嵌入式·zynq
7yewh8 天前
嵌入式 linux Git常用命令 抽补丁 打补丁
linux·arm开发·git·嵌入式硬件·ubuntu·嵌入式·嵌入式软件
Jason_zhao_MR9 天前
基于米尔全志T527开发板的OpenCV进行手势识别方案
人工智能·mcu·opencv·计算机视觉·嵌入式
昊虹AI笔记9 天前
Source Insight的使用经验汇总
嵌入式