• 深入浅出计算机组成原理01-冯·诺依曼体系结构


    为什么选择这个课程

    借用作者在开篇词中的原话,如果越早去弄清楚计算机的底层原理,在你的知识体系中“储蓄”起这些知识,也就意味着你有越长的时间来收获学习知识的“利息”
    对于非科班出身的我,虽然之前也补救过,但时间一长就很容易淡忘,不知根也不知底,所以现在开始慢慢的看书看课程来补齐这些知识。写代码仅仅是停留在表面,对我来说容易枯燥,对于这些底层的知识我觉得很有必要去了解。

    计算机的基本硬件组成

    在这里插入图片描述
    计算机的三大件:CPU内存主板

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

    输入、输出设备:包含显示器、键盘和鼠标等。

    硬盘负责将各种数据持久的保存下来。

    显卡市面上主要分为独显、集显、核显。

    独显:独显又称独立显卡,显卡是一个独立的个体,可以直接加装到电脑内,对于笔记本电脑来说,独立显卡同样是单独的个体,有独立显卡芯片。
    集显:集显又称集成显卡,集成显卡压缩在主板北桥芯片中,也有集成显卡直接焊接在主板上,集成显卡一般作用在主板硬件上,换句话说:主板上焊接了显卡芯。
    核显:核显又称核心显卡,核显是指CPU硬件中焊接了显卡芯片,又能说CPU中集成了核显。核显对应的硬件是CPU。

    南桥芯片组:它在主板上的位置,通常在主板的“南面”,它的作用就是作为“桥”,来连接鼠标、键盘以及硬盘这些外部设备和 CPU 之间的通信。
    北桥芯片组:以前的主板上通常也有“北桥”芯片,用来作为“桥”,连接 CPU 和内存、显卡之间的通信。不过,随着时间的变迁,现在的主板上的“北桥”芯片的工作,已经被移到了 CPU 的内部,所以你在主板上,已经看不到北桥芯片了。


    冯·诺依曼体系结构

    首先是一个包含算术逻辑单元(Arithmetic Logic Unit,ALU)和处理器寄存器(Processor Register)的处理器单元(Processing Unit),用来完成各种算术和逻辑运算。因为它能够完成各种数据的处理或者计算工作,因此也有人把这个叫作数据通路(Datapath)或者运算器

    然后是一个包含指令寄存器(Instruction Register)和程序计数器(Program Counter)的控制器单元(Control Unit/CU),用来控制程序的流程,通常就是不同条件下的分支和跳转。在现在的计算机里,上面的算术逻辑单元和这里的控制器单元,共同组成了我们说的 CPU

    接着是用来存储数据(Data)和指令(Instruction)的内存。以及更大容量的外部存储,在过去,可能是磁带、磁鼓这样的设备,现在通常就是硬盘

    最后就是各种输入和输出设备,以及对应的输入和输出机制。我们现在无论是使用什么样的计算机,其实都是和输入输出设备在打交道。个人电脑的鼠标键盘是输入设备,显示器是输出设备。我们用的智能手机,触摸屏既是输入设备,又是输出设备。而跑在各种云上的服务器,则是通过网络来进行输入和输出。这个时候,网卡既是输入设备又是输出设备。

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

    而所有的计算机程序,也都可以抽象为从输入设备读取输入信息,通过运算器和控制器来执行存储在存储器里的程序,最终把结果输出到输出设备中。而我们所有撰写的无论高级还是低级语言的程序,也都是基于这样一个抽象框架来进行运作的。

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

    总结

    可以说,冯·诺依曼体系结构确立了我们现在每天使用的计算机硬件的基础架构。因此,学习计算机组成原理,其实就是学习和拆解冯·诺依曼体系结构。

    具体来说,学习组成原理,其实就是学习控制器、运算器的工作原理,也就是 CPU 是怎么工作的,以及为何这样设计;

    学习内存的工作原理,从最基本的电路,到上层抽象给到 CPU 乃至应用程序的接口是怎样的;学习 CPU 是怎么和输入设备、输出设备打交道的。

    学习组成原理,就是在理解从控制器、运算器、存储器、输入设备以及输出设备,从电路这样的硬件,到最终开放给软件的接口,是怎么运作的,为什么要设计成这样,以及在软件开发层面怎么尽可能用好它。

  • 相关阅读:
    Stable Diffusion Webui--安装与使用
    【实操干货】如何开始用Qt Widgets编程?(五)
    c++异常
    GitLab的个人仓库转移到团队仓库
    摸鱼工具 100行代码实现单号转换工具
    各个 Android 版本号和 Target API 等级,名称。
    软考 系统架构设计师系列知识点之数字孪生体(2)
    Electron + VUE3 桌面应用,主进程和渲染进程通信
    Lombok常用方法及原理介绍
    【pytorch】有关nn.EMBEDDING的简单介绍
  • 原文地址:https://blog.csdn.net/Apandam/article/details/126889204