zoukankan      html  css  js  c++  java
  • 【计算机组成原理】01-冯诺依曼体系结构

    1. 计算机的基本硬件组成

    1.1 CPU(Central Processing Unit)

      CPU 是计算机最重要的核心配件,负责进行运算。

    1.2 内存(Memory)

      程序都要加载到内存中才能运行。此外,程序读取的数据、计算得到的结果,也都要放到内存里。内存越大,能加载的东西越多。

    1.3 主板(Motherboard)

      前两个小节提到,CPU 从内存读取程序和数据,运算完毕后又要将数据写回内存。但 CPU 和内存不能直接插在一起,此时就需要主板。主板是一个有很多插槽的配件,CPU 和内存都插在主板上。

      主板的芯片组(Chipset)和总线(Bus)解决了 CPU 和内存的通信问题。芯片组控制数据传输的流转,解决了数据从哪里到哪里的问题。总线则是实际数据传输的通路,总线速度(Bus Speed)决定了数据能传输得多快。

    1.3.1 南桥(South Bridge)

      鼠标、键盘、硬盘等 I/O 设备插在主板上,它们和 CPU 的通信是由主板上的南桥控制的。

    1.3.2 北桥(North Bridge)

      北桥主要负责 CPU 和内存、显卡之间的通信。但随着技术发展,北桥的工作已经转移到 CPU 内部完成。现在的新主板上已经没有北桥芯片了。

    1.4 输入设备(Input Device)

      有了鼠标、键盘等输入设备,我们才能向计算机传入数据。

    1.5 输出设备(Output Device)

      有了显示器这类输出设备,我们才能看到计算机输出的图像、文字等信息。

    1.6 硬盘

      硬盘用于持久保存数据。

    1.7 显卡(Graphics Card)

      使用图形界面操作系统的计算机,都需要显卡。

      显卡中有另一个处理器——GPU(Graphics Processing Unit)。GPU 也可以做各种“计算”工作。

    1.8 电源

      以上设备,均需供电方能使用。

      上述的各部分硬件中,显示器、鼠标、键盘、硬盘并非是必需的部分。譬如网吧的电脑没有硬盘,云服务器没有键鼠、显示器。

    2. 冯·诺伊曼体系结构

    2.1 First Draft

      上一节中,我们列举了计算机的硬件组成。为了引出冯·诺伊曼体系结构,我们先来看看,手机是怎么做的。

      手机里没有内存插槽、CPU 插槽这些东西。受限于手机尺寸,手机的做法是将 CPU、内存等模块封装到一个芯片里,然后将这个芯片嵌入到手机主板上。这就是所谓的片上系统(System On a Chip,SoC)

      从硬件的组成方式来看,手机和计算机有明显的差异。但具体到移动端和 PC 端的软件开发,似乎又没有什么差别。这是因为,不论是 PC、手机还是树莓派这类平台,都遵循同一个“计算机”的抽象概念——冯·诺依曼体系结构(Von Neumann architecture)

      冯·诺依曼体系结构,也叫存储程序计算机。这里暗含两个概念,一个是“可编程”计算机,一个是“存储”计算机。

      所谓“可编程”计算机,要和“不可编程”对照来理解。有些计算机是由门电路组成,用于实现特定的计算程序。这种计算机就是“不可编程”的,因为已经在硬件层面写死了。

      所谓“存储”计算机,就是说程序本身存储在计算机的内存里,可以通过加载不同的程序来解决不同的问题。像早期的插线板式计算机,每次修改程序都要重新插线,无法将程序存储下来,这就是“不可存储”的。

      无论是“不可编程”还是“不可存储”,都会让使用计算机的效率大大降低。这也是“存储程序计算机”的由来。冯·诺依曼写了一篇名为《First Draft of a Report on the EDVAC》的报告,描述了他所构想的计算机。这篇文章有个特殊的简称——First Draft。现代计算机的发展由此开始。

    2.2 计算机的组成单元

      按照 First Draft 的描述,计算机由以下几部分组成。其中处理器单元和控制器单元共同组成了 CPU。

    2.2.1 处理器单元(Processing Unit,PU)

      处理器单元亦称运算器,用于完成各种算术和逻辑运算。

      处理器单元又包含算术逻辑单元(Arithmetic Logic Unit,ALU)处理器寄存器(Processor Register,PR)

    2.2.2 控制器单元(Control Unit,CU)

      控制器单元用于控制程序的流程,通常是分支和跳转。

      控制器单元包含指令寄存器(Instruction Register,IR)程序计数器(Program Counter,PC)

    2.2.3 存储单元

      存储单元分为两部分——用于存储数据和指令的内存,以及更大容量的外部存储。

    2.2.4 输入输出设备

      我们无论使用什么形式的计算机,其实都是在和输入输出设备打交道。即使是跑在各种云上的服务器,也要通过网络进行输入输出,此时网卡即使输入设备,又是输出设备。

    2.2.5 现代计算机的基础架构

      计算机的任何一个部件都可以归到运算器控制器存储器输入设备输出设备中。现代计算机也是基于这个基础架构来设计开发的。

      计算机程序,都是从输入设备读取信息,通过运算器和控制器执行存储在存储器中的程序,最终将结果输出到输出设备中。

    冯·诺依曼体系结构示意图

    3. 脑图

  • 相关阅读:
    JDK的KeyTool和KeyStore等加密相关
    关于分布式事务的随笔[待续]
    Netty实例几则
    Disruptor快速入门
    Java获取系统环境信息
    JDK的BIO, NIO, AIO
    四种常用IO模型
    JDK的多线程与并发库
    递归转换为迭代的一种通用方式
    二叉树的java实现
  • 原文地址:https://www.cnblogs.com/murongmochen/p/14083284.html
Copyright © 2011-2022 走看看