计算机组成原理与结构入门指南
计算机组成原理与结构入门指南
计算机组成原理是计算机科学的核心课程之一,它不仅介绍了计算机硬件的基本组成和工作原理,还阐述了软件与硬件之间的桥梁作用。本文将带你深入了解计算机的底层知识,从基础硬件到冯·诺依曼体系结构,再到具体的计算机组成原理,帮助你建立对计算机科学的整体认知。
01.计算机底层知识
1.1 计算机基础组成
计算机是由 CPU、内存、显示器等设备组成的硬件系统。在软件开发领域,无论是操作系统、编译器这样的硬核代码,还是 Web 应用、手机 App 这样的应用层代码,都需要对计算机的硬件原理有基本的了解。学习计算机组成原理可以帮助你建立对计算机科学的整体认知,无论是从事硬件开发还是软件开发,都会受益匪浅。
1.2 理论和实践相结合
学习计算机组成原理可能会遇到以下挑战:
- 知识广度大:组成原理中的概念非常多,每个概念的信息量也非常大。例如,理解 CPU 中的算术逻辑单元(ALU)需要涉及二进制表示、电路、逻辑门等多个知识点。
- 知识深度深:组成原理中的很多概念,展开后就是计算机学科的另外一门核心课程。例如,从高级语言到机器码的转换过程,就涉及编译原理的知识。
- 学以致用难:由于这门课的理论性较强,很多学习者难以将其与实际开发工作相结合,导致学习动力不足。
为了克服这些困难,建议采用以下学习方法:
- 串联知识点:学完一个知识点后,思考程序从输入代码到运行结果的整个过程,以及计算机层面的具体步骤和优化点。
- 以教带学:尝试口头表述或书面记录所学知识点,有助于加深理解。
- 实践验证:通过编写示例程序来验证知识点,特别是与性能相关的概念,有助于加深记忆。
02.计算机基本硬件
2.1 基本硬件组成
计算机的基本硬件主要包括 CPU、内存和主板:
- CPU(中央处理器):负责执行各种计算任务,是计算机的核心部件之一。
- 内存(Memory):用于存储正在运行的程序和数据,内存越大,能加载的程序和数据也就越多。
- 主板(Motherboard):作为 CPU、内存和其他设备之间的连接桥梁,使它们能够协同工作。
2.2 输入和输出设备
除了三大件,计算机还需要各种输入输出设备(I/O 设备):
- 输入设备:如键盘、鼠标,用于接收用户的输入信息。
- 输出设备:如显示器,用于显示计算机处理的结果。
这些设备共同构成了完整的计算机系统。
03.冯·诺依曼体系结构
3.1 存储程序计算机
冯·诺依曼体系结构是现代计算机的基础架构,其核心思想是“存储程序计算机”。这种计算机具有以下特点:
- 可编程性:程序不是硬编码在硬件中,而是可以存储和修改的。
- 存储性:程序和数据都存储在内存中,可以通过加载不同的程序来解决不同的问题。
3.2 冯·诺依曼描述计算机
冯·诺依曼体系结构将计算机分为以下几个主要部分:
- 处理器单元(Processing Unit):包含算术逻辑单元(ALU)和处理器寄存器,负责执行各种算术和逻辑运算。
- 控制器单元(Control Unit):包含指令寄存器和程序计数器,负责控制程序的流程。
- 内存:用于存储数据和指令。
- 输入和输出设备:用于与外部世界进行交互。
3.3 抽象计算机框架
任何一台计算机都可以抽象为以下五个部分:
- 运算器:负责执行各种计算任务。
- 控制器:负责控制程序的执行流程。
- 存储器:用于存储数据和指令。
- 输入设备:用于接收外部输入。
- 输出设备:用于输出处理结果。
所有计算机程序都可以抽象为从输入设备读取输入信息,通过运算器和控制器执行存储在存储器里的程序,最终把结果输出到输出设备中。
3.4 冯·诺依曼体系延伸
学习计算机组成原理,就是在学习冯·诺依曼体系结构的各个组成部分:
- 控制器:学习控制器的工作原理,理解 CPU 是如何工作的。
- 运算器:学习运算器的工作原理,理解 CPU 的计算过程。
- 存储器:学习存储器的工作原理,理解数据在内存中的存储方式。
- 输入输出设备:学习 CPU 是如何与输入输出设备交互的。
3.5 综合案例理解概念
假设小杨在假期中突然想起了一个许久没有联系的朋友,随机在电脑中打开了QQ,在对话框中输入了要发送的消息,随即向朋友发送了过去。这个过程可以分解为以下几个步骤:
- 打开QQ软件时,程序需要加载到内存中,因为 CPU 只能从内存中读取数据。
- 小杨通过键盘输入消息,这个过程属于 I/O 过程,数据会以二进制形式存储在内存中。
- 消息通过网络发送到朋友的电脑,朋友的电脑接收到数据后,需要先加载到内存中,然后由 CPU 进行处理。
- 最后,处理后的消息通过显示器输出,完成整个通信过程。
3.6 数据交互层面设计
在冯·诺依曼体系结构中,数据交互的设计原则是:
- CPU 不直接与外设交互:CPU 只与内存交互,外设的数据需要先加载到内存中,CPU 需要的数据也从内存中获取。
- 提高整机效率:内存的速度比外设快很多,通过内存作为中介可以提高整机的效率。
3.7 数据流动层面设计
以 QQ 聊天为例,数据流动的过程如下:
- 用户通过键盘输入消息,数据被加载到内存中。
- CPU 对数据进行处理(如加密)后,再写回内存。
- 内存将数据写到网卡,通过网络发送到对方的网卡。
- 对方的网卡将数据写入内存,CPU 处理后再写回内存。
- 最后,数据从内存输出到显示器。
3.8 控制层面设计思想
控制层面的设计主要涉及以下几个方面:
- 外设数据加载:内存如何知道外设中有数据需要加载。
- 数据写入时机:内存中的数据何时写入磁盘。
- 控制信号:CPU 的控制器负责发送控制信号,操作系统在幕后帮助 CPU 进行决策。
3.9 来看一道练习题
例题:冯诺依曼机的基本工作方式是:
A. 控制流驱动方式
B. 多指令多数据流方式
C. 微程序控制方式
D. 数据流驱动方式
答案:A
解析:冯·诺依曼机的工作方式是控制流驱动方式,即按照指令的执行序列,依次读取指令,然后根据指令所含的控制信息,调用数据进行处理。
04.计算机组成原理
4.1 计算机知识地图
计算机组成原理主要围绕计算机的组织和运作展开,包括以下几个方面:
- 硬件组成:CPU、内存、输入输出设备等硬件组件。
- 性能和功耗:计算机的两个核心指标。
- 指令执行:程序如何从高级语言变成机器指令并被执行。
- 数据表示和计算:数据在计算机中的表示方式,以及基本运算的实现。
4.2 计算机基本组成
计算机由以下五大基本组件组成:
- 运算器:负责执行各种计算任务。
- 控制器:负责控制程序的执行流程。
- 存储器:用于存储数据和指令。
- 输入设备:用于接收外部输入。
- 输出设备:用于输出处理结果。
在学习这些组件时,还需要考虑性能和功耗这两个核心指标。
4.3 控制器
控制器是计算机的指挥中心,由程序计数器(PC)、指令寄存器(IR)和控制单元(CU)组成:
- 程序计数器(PC):存放当前指令的地址,可以自动加1以形成下一条指令的地址。
- 指令寄存器(IR):存放当前的指令,其内容来自主存的数据寄存器(MDR)。
- 控制单元(CU):分析指令并发出各种微操作命令序列。
4.4 存储器
存储器分为主存储器(内存)和辅助存储器(外存):
- 主存储器:CPU可以直接访问的存储器,用于存放当前正在运行的程序和数据。
- 辅助存储器:用于帮助主存存储更多信息,但需要先调入主存才能被 CPU 访问。
主存的工作方式是按地址存取,即通过地址寄存器(MAR)和数据寄存器(MDR)进行读写操作。
4.5 输入设备
输入设备的主要功能是将程序和数据以机器所能识别和接受的信息形式输入计算机。常见的输入设备包括:
- 键盘
- 鼠标
- 扫描仪
- 摄像机
4.6 输出设备
输出设备的任务是将计算机处理的结果以人们所能接受的形式或其他系统所要求的信息形式输出。常见的输出设备包括:
- 显示器
- 打印机
4.7 运算器
运算器是计算机的执行部件,用于进行算术运算和逻辑运算。运算器的核心是算术逻辑单元(ALU),此外还包括若干通用寄存器和程序状态寄存器(PSW)。
05.如何学习组成原理
5.1 知识体系太大了
计算机组成原理涉及的知识面非常广,每个知识点深入研究都可以成为一门独立的课程。例如:
- 编译原理:研究程序如何从高级语言变成机器指令。
- 操作系统:研究程序的加载、执行和资源管理。
- 数字电路:研究计算实现背后的电路原理。
- 计算机体系结构:研究 CPU 和存储系统的优化。
5.2 如何学习该专栏
学习计算机组成原理时,可以采用以下方法:
- 学会提问:学完一个知识点后,思考程序从输入代码到运行结果的整个过程,以及计算机层面的具体步骤和优化点。
- 以教带学:尝试口头表述或书面记录所学知识点,有助于加深理解。
- 实践验证:通过编写示例程序来验证知识点,特别是与性能相关的概念,有助于加深记忆。
通过这些方法,可以更好地掌握计算机组成原理的知识,为深入学习计算机科学打下坚实的基础。