介绍

计算机组成

在最基本的层面上,计算机是由三个组件组成的设备:

  • 编译并且执行程序的处理器
  • 存储数据和程序的存储器
  • 一种与外界传输数据的机制

以一个计算机的基本配置为例:

Feature Specification
Display 23.8-inch FHD (1920x1080) TrueLife LED-Backlit Touch Display with Wide Viewing Angle (IPS)
Processor 7th Generation Intel(R) Core(TM) i5-6200U Processor (3M Cache, up to 2.80 GHz)
Memory 8GB Single Channel DDR3L 1600MHz (8GBx1)
Storage 1TB 5400 rpm Hard Drive
Graphics Intel HD Graphics 620
Optical Drive DVD Super Multi Drive
Wireless 802.11ac + Bluetooth 4.0, Dual Band 2.4&5 GHz, 1x1
USB Ports 2 x USB 2.0 Ports, 2 x USB 3.0 Ports
Operating System Windows 10 Home 64-bit

微处理器:这是系统的“大脑”,主要功能是执行程序指令。拿这台计算机配置来说,微处理器是Intel i5 Processor ,运行频率为 2.80 GHz。

系统总线:负责在计算机内传输数据,系统总线速度越快越好。这台计算机的系统总线运行速度为 1600 MHz。

有较大主内存容量的计算机相比那些内存小的计算机而言,可以用更快的速度去运行更大的项目。

RAM:是 random access memory(随机访问内存)的简称。随机访问意味着当你知道内存位置时,你可以直接访问到内存的内容。

CPU:Cache(CPU)是一个临时内存的类型,这种内存可以被RAM访问的更加快。

硬盘:硬盘容量决定了数据的数量和你可以储存的程序的大小,拿上方的计算机配置为例,它可以储存 1TB。5400 rpm 指的是磁盘的转速。通常来说,磁盘旋转速度越快,它发送数据到RAM的速度也就越快(但是这里头同时也涉及到许多其他因素)。

在计算机系统中,2的幂通常比10的幂更加重要,但是人们往往更容易理解10的幂。

SI Prefixes and Their Powers

Prefix Symbol Power of 10 Power of 2 Prefix Symbol Power of 10 Power of 2
Kilo K 1 thousand = 10³ 2¹⁰ = 1024 Milli m 1 thousandth = 10⁻³ 2⁻¹⁰
Mega M 1 million = 10⁶ 2²⁰ Micro μ 1 millionth = 10⁻⁶ 2⁻²⁰
Giga G 1 billion = 10⁹ 2³⁰ Nano n 1 billionth = 10⁻⁹ 2⁻³⁰
Tera T 1 trillion = 10¹² 2⁴⁰ Pico p 1 trillionth = 10⁻¹² 2⁻⁴⁰
Peta P 1 quadrillion = 10¹⁵ 2⁵⁰ Femto f 1 quadrillionth = 10⁻¹⁵ 2⁻⁵⁰
Exa E 1 quintillion = 10¹⁸ 2⁶⁰ Atto a 1 quintillionth = 10⁻¹⁸ 2⁻⁶⁰
Zetta Z 1 sextillion = 10²¹ 2⁷⁰ Zepto z 1 sextillionth = 10⁻²¹ 2⁻⁷⁰
Yotta Y 1 septillion = 10²⁴ 2⁸⁰ Yocto y 1 septillionth = 10⁻²⁴ 2⁻⁸⁰

系统指标中使用的前缀通常应用于底层基本系统为基数 2 而不是基数 10 的情况。

计算机水平层级

  • 如果一台机器要能够解决各种各样的问题,它必须能够执行用不同编程语言编写的程序。
  • 编程经验告诉我们,当问题很大时,我们应该将其分解并使用 “分而治之” 的方法。
  • 在编程中,我们将一个问题划分为多个模块,然后分别设计每个模块。
  • 每个模块执行特定任务,只知道如何与其他模块交互。

我们可以想象机器是从层次构成的,其中每个层次都有一个特定的、不同的功能,并存在假设的机器。具体可以理解为:

📌1. 机器是层次化(Hierarchical)的

“我们可以想象机器是从层次构成的”

  • 机器(例如计算机)并不是一个简单的整体,而是由多个层级组成的。
  • 这些层级之间有 明确的分工,高层依赖低层的功能,而低层提供基础支持。
💡示例:计算机的层次结构

计算机可以分为以下几个层次:

  1. 逻辑门层(最底层):与、或、非门等基本电子元件。
  2. 数字电路层:寄存器、加法器、存储器等基本硬件电路。
  3. 微架构层:CPU 内部的缓存、流水线、指令调度等。
  4. 指令集架构层(ISA):定义 CPU 如何执行指令,如 x86、ARM。
  5. 操作系统层:管理硬件资源,如 Windows、Linux。
  6. 应用程序层(最高层):如浏览器、游戏、办公软件等。

📌2. 每个层次都有其特定的功能

“其中每个层次都有一个特定的、不同的功能”

  • 每个层次负责不同的任务,并且这些任务通常是抽象的。
  • 高层的功能是建立在低层的功能之上的。
💡示例:计算机的各层功能
层次 功能
物理层(电路) 电子信号传输
逻辑层(门电路) 计算基本逻辑,如加法、存储
指令集架构层 解释并执行汇编指令
操作系统层 进程管理、内存管理、设备管理
应用程序层 提供用户交互,如网页浏览、文档编辑

📌3. 假设的机器(Hypothetical Machine)

“并存在假设的机器”

  • 这里的 “假设的机器” 可以指:
    1. 抽象模型(Abstraction Model):在研究计算机时,我们可以假设一个理想的机器,来帮助理解其工作原理。例如:
      • 图灵机(Turing Machine):计算理论中的数学模型。
      • 冯·诺依曼模型:现代计算机的基本架构。
    2. 虚拟机(Virtual Machine):在实际计算机中,我们可以在软件层面模拟不同的计算机,例如:
      • JVM(Java Virtual Machine):使 Java 代码可以在不同平台运行。
      • x86 模拟器:在 ARM 设备上运行 x86 指令集的软件。

我们将每个层次的假设计算机称为虚拟机,每个层次的虚拟机执行它自己特定的一系列指令。

计算机系统的层次结构一图流

层级 名称 描述
第 6 层 用户层(User Level) 允许用户与计算机系统交互,我们平时最常见、最熟悉的层次。
第 5 层 高级语言层(High-Level Language Level) 使用高级编程语言(C、C++、Python、Java)编写程序。
第 4 层 汇编语言层(Assembly Language Level) 处理由高级语言编译后的汇编语言指令,以及直接在该层编程的指令。
第 3 层 系统软件层(System Software Level) 控制正在执行的进程,保护系统资源,通常直接传递汇编指令,汇编语言指令无需修改即可通过第 3 层
第 2 层 机器层(Machine Level) 也称为指令集架构(ISA),由特定计算机体系结构的指令组成,用机器语言编写的程序不需要编译器或解释器。
第 1 层 控制层(Control Level) 控制单元解码并执行指令,并且通过系统移动数据。控制单元可微程序化(microprogrammed)硬件固定(hardwired)。微程序是用低级语言编写的程序,由硬件实现,硬布线控制单元由直接执行机器指令的硬件组成。
第 0 层 数字逻辑层(Digital Logic Level) 这个层次是我们找到数字电路(芯片)的地方,数字电路由门和电线组成,这些组件实现了所有其他层次的数学逻辑。