计算机组成原理之概述篇

环境说明:

Linux环境: VMWare WorkStation + Linux虚拟机

编程语言:C++,Python

  • 计算机的发展简史

  • 计算机的分类

  • 计算机的体系结构

  • 计算机的层次与编程

  • 计算机的计算单位

  • 计算机的字符与编码集

  • 计算机发展的四个阶段

  • 微型计算机的发展历史

计算机发展简史

计算机发展的四个阶段

image-20250517112441335

第一个阶段:电子管计算机

第二次世界大战时电子管计算机产生的催化剂。

英国为了解密德国海军的密文

ENIAC 埃尼阿克 战争使用了飞机和火箭,打得准则需要计算射击参数 设计参数需要几千次运算才能计算出来,没有计算机前,需要人手算。缺点:集成度小,空间占用大等。

第二阶段:晶体管计算机

贝尔实验室的三个科学家发明了晶体管

在很多的电路中我们还是可以看到晶体管

著名的晶体管计算机:TX-0 PDP-1

集成度相对较高

第三阶段:集成电路计算机

德州仪器的工程师发明了集成电路(IC) 计算机具备进入千家万户的条件

IBM =》 7904 ,1401 这两款计算机主打功能不同,相互无法兼容,不愿意投入两组人力。

IBM推出兼容的产品System/360 => 操作系统的雏形

第四个阶段:超大规模集成电路计算机

一个芯片集成了上百万的晶体管

速度更快体积更小价格更低、用途丰富

乔布斯 Apple 和 Apple二代

第五个阶段:未来的计算机(畅想)

生物计算机

量子计算机

“集成度”指的是在单位面积或体积内集成的晶体管数量。 集成度越高,代表着芯片尺寸可以更小,或者在相同尺寸的芯片上可以容纳更多的元件,从而实现更多的功能和更高的性能。

在计算机发展史中:

  • 电子管计算机:使用电子管作为主要的逻辑元件。电子管体积大、功耗高、产生的热量多,因此一台计算机需要成千上万个电子管,占据巨大的空间。 这导致了电子管计算机的集成度非常小。
  • 晶体管计算机:晶体管取代了电子管。晶体管体积小、功耗低、速度更快。 这使得在相同的空间内可以容纳更多的逻辑元件,因此晶体管计算机的集成度相对于电子管计算机有了显著提高。

简单来说,集成度的提高是计算机体积越来越小、性能越来越强、功耗越来越低的关键因素之一。 电子管到晶体管的转变是计算机集成度提升的一个重要里程碑。 后来集成电路(IC)以及超大规模集成电路(VLSI)的出现,更是将集成度推向了新的高度,使得数百万甚至数十亿个晶体管可以集成在一个小小的芯片上。

个人(微型)计算机的发展历史

从第三个阶段开始的

受限于性能 单核CPU

单核CPU:

1971-1973 500KHz频率的微型计算机(字长8位)

1973-1978 高于1MHz频率的微型计算机(字长8位)

1978-1985 500MHz频率的微型计算机(字长16位)

1985-2000 高于1GHz频率的微型计算机(字长32位)

200-现在 高于2GHz频率的微型计算机(字长64位)

可能有朋友不太明白上面的Hz以及字长

这里简单说一下:

Hz (赫兹)

Hz 是频率的单位,全称是赫兹 (Hertz)。它表示的是每秒钟周期性事件发生的次数

在 CPU(中央处理器)的语境下,Hz 用来衡量时钟频率 (Clock Speed 或 Clock Rate)。CPU 内部有一个时钟发生器,它会产生规律性的电脉冲信号,就像一个节拍器一样,指挥 CPU 的各个部件协同工作。

  • 1 Hz 就代表 CPU 的时钟每秒钟跳动 1 次。
  • KHz (千赫兹):1 KHz = 1000 Hz,代表 CPU 时钟每秒钟跳动 1000 次。
  • MHz (兆赫兹):1 MHz = 1,000,000 Hz (一百万赫兹),代表 CPU 时钟每秒钟跳动一百万次。
  • GHz (吉赫兹):1 GHz = 1,000,000,000 Hz (十亿赫兹),代表 CPU 时钟每秒钟跳动十亿次。

简单来说,CPU 的时钟频率越高 (Hz 值越大),意味着 CPU 在单位时间内能够执行更多的基本操作,通常也就意味着 CPU 的运算速度越快,性能越强。 你给出的数据中,从 500KHz 到高于 2GHz,就反映了 CPU 运行速度的巨大提升。

字长 (Word Length / Word Size)

字长指的是 CPU 一次能够处理的二进制数据的位数 (bits)。你可以把它想象成 CPU 用来思考和处理信息的基本单位的“宽度”。

  • 位 (bit):计算机中数据的最小单位,只能是 0 或 1。
  • 字节 (Byte):通常 1 字节 = 8 位。

字长决定了以下几个方面:

  1. CPU 内部寄存器的大小:寄存器是 CPU 内部用来临时存储数据的高速存储单元。字长是多少位,通常寄存器就能存储多少位的数据。
  2. CPU 一次能处理的数据量:例如,一个 8 位字长的 CPU,一次可以处理 8 位的数据;一个 64 位字长的 CPU,一次可以处理 64 位的数据。显然,字长越大,CPU 一次能处理的数据就越多,效率也就越高。
  3. 内存寻址能力:CPU 需要通过地址来访问内存中的数据。字长的大小会影响 CPU 能够直接访问的内存空间大小。例如,一个 32 位字长的 CPU,理论上最大可以寻址 232 字节 (约 4GB) 的内存空间。而 64 位字长的 CPU,其寻址能力则大大增加。

你给出的数据中:

  • 8 位字长:CPU 一次能处理 8 位二进制数。
  • 16 位字长:CPU 一次能处理 16 位二进制数。
  • 32 位字长:CPU 一次能处理 32 位二进制数。
  • 64 位字长:CPU 一次能处理 64 位二进制数。

总结一下:

  • Hz (频率) 关系到 CPU 的运算速度快慢
  • 字长 关系到 CPU 一次能处理多少数据以及能管理多大的内存空间

这两个参数都是衡量 CPU 性能的重要指标。随着技术的发展,CPU 的频率越来越高,字长也越来越大,从而带来了计算机性能的飞速提升。

摩尔定律

集成电路的性能,每18-24个月就会提升一倍

但是在21世纪这个定律慢慢失效了,因为随着芯片的发展,电路越来越复杂,热损耗也越来越高,无法解决这样的问题所以慢慢也就失效了。

进而发展了多核CPU

多核CPU :

2005 : Intel 奔腾系列双核CPU,AMD速龙系列

2006 : Intel酷睿四核CPU

Intel 酷睿系列十六核CPU

Intel 至强系列五十核CPU

主要是从CPU的角度来看待

计算机的分类

超级计算机

  • 功能最强,运算速度最快,存储容量最大的计算机
  • 多用于国家高科技领域和尖端技术研究

标记它们的运算速度的单位是TFlop/s

1TFlop/s=每秒一万亿次浮点计算

Intel® Core™ i7-6700k CPU @ 4.00GHz:44.87GFlop/s

大型计算机

又称之为大型机,大型主机,主机等

具有高性能,可处理大量数据与复杂的运算

在大型机市场领域,IBM占据很大的份额

COBOL编程语言

IBM Z9这台打星际是NASA最后一台打星际 Red Hat Enterprise Linux 大型机造价高昂

去“IOE”是阿里巴巴提出的概念

代表了高维护费用的存储系统

不够灵活,伸缩性若

“去IOE”行动:I(IBM),O(Oracle)E(EMC)

阿里2008年提出去“IOE运动”,于是在2009年成立了阿里云

迷你计算机(服务器)

也称之为小型机,普通服务器

不需要特殊的空调场所

具备不错的算力,可以完成较复杂的运算

普通服务器以及替代了传统的大型机,成为大规模企业计算的中枢

工作站

高端的通用微型计算机,提供比个人计算机更强大的性能

类似于普通台式电脑,体积较大,但性能强劲

微型计算机

又称之为个人计算机,最为普通的一类计算机

麻雀虽小,五脏俱全

从构成的本质上来讲,个人计算机与前面的分类无异

计算机的体系与结构

冯诺依曼体系

将程序指令和数据一起存储的计算机设计概念结构

早期计算机仅含固定用途程序=》改变程序得更改结构,重新设计电路=》[坑爹啊,不能先打会游戏然后再写代码]=》把程序存储起来并设计通用电路 => 存储程序指令设计通用电路

必须有一个存储器

必须有一个控制器

必须有一个运算器

必须有输入设备

必须有输出设备

现代计算机都是冯诺依曼机

能够把需要的程序和数据送至计算机

能够长期记忆程序,数据,中间结果以及最终运算结果的能力

能够具备算术,逻辑运算和数据传送等数据加工处理的能力

能够按照要求把处理结果输出给用户

image-20250517123626089

冯诺依曼瓶颈

CPU和存储器速率之间的问题无法调和

因为CPU速度极快,但是存储器速度很慢,这样会导致CPU经常空转等待数据传输。那么如何解决?

没有什么是加一层解决不了的,有的话就再加一层。

现代计算机的结构

现代计算机在冯诺依曼机体系结构基础上进行修改

解决CPU与存储设备之间的性能差异问题

image-20250517133715037

存储器 之前是磁带硬盘现在增加了更告诉的设备:内存,CPU的寄存器作为缓存,这样速度更快了

可以理解为以及存储器为核心

计算机的层次与编程语言

程序翻译与程序解释

人类语言:我是一名学生

计算机:01011100101…

需要进行语言之间的转换

较为高级的计算机语言L1

较为低级的计算机语言L0

那什么是程序翻译?

程序翻译就是L1进行程序逻辑描述,通过编译器生成较为低级的计算机语言L0(计算机实际执行的语言)

那什么是程序解释?

L1进行程序逻辑描述然后L1作为输入通过解释器来使用L0语言实现另外一个程序(较为低级的计算机语言L0)

计算机执行的指令都是L0

翻译过程生成新的L0程序,解释过程不生成新的L0程序

解释过程由L0编写的解释器去解释L1程序

常见的程序翻译型语言:C/C++,Object-C,Golang

常见的程序解释型语言:Python,Php,JavaScript

翻译+解释型语言:Java C# Java程序编译为JVM字节码然后再通过解释器来解释为机器码

image-20250517134517562

硬件逻辑层

门,触发器等逻辑电路组成

属于电子工程的领域

微程序机器层

编程语言是微指令集

微指令所组成的微程序直接交由硬件执行

传统机器层

编程语言是CPU指令集(机器指令)

编程语言和硬件是直接相关

不同架构的CPU使用不同的CPU指令集

一条机器指令对应一个微程序

一个微程序对应一组微指令

操作系统层

向上提供了简易的操作界面

向下对接了指令系统,管理硬件资源

操作系统层是软件和硬件之间的适配层

汇编语言层:

汇编语言是汇编语言

汇编语言可以翻译为可直接执行的机器语言

完成翻译的过程就是汇编器

高级语言层

编程语言为广大程序员所接受的高级语言

高级语言的类别非常多,有几百种

常见的高级语言有:Python,Java,C/C++,Golang

应用层

满足计算机针对某种用途而专门设计:word,Excel,Powerpoint

分层的目的是便于理解

计算机的计算单位

容量单位

速度单位

容量单位 768M光盘 4G内存 2T硬盘

在物理层面,高低电平记录信息

理论上只认识0/1两种状态

0/1能够表示的内容太少了,需要更大的容量表示方法 0/1称为bit(比特位)

属性 bit Byte KB MB GB TB PB EB
名字 比特位 字节 千字节 兆字节 吉字节 太字节 拍字节 艾字节
比例 - 8 bits 1024 B 1024 KB 1024 MB 1024 GB 1024 TB 1024 PB
常见设备 门电路 - 寄存器 高速缓存 内存/硬盘 硬盘 云硬盘 数据仓库

字节:1Byte = 8bit

1G内存,可以存储多少字节的数据?可以存储多少比特数据?

1G = 1024^3 Bytes = 1024^3*8bits

为什么网上买的移动硬盘500G,格式化之后就只剩下465G了?

硬盘上一般用10进位标记容量

(500*1000^3)/ 1024^3 约等于 465

宽带中 2M宽带,4M宽带,100M宽带是什么意思?这里是容量吗?不是 是速度

网络速度

为什么电信拉的100M光纤,测试峰值速度只有12M每秒?

网络常用单位是Mbps

100M/s = 100Mbps = 100Mbit/s

100Mbit/s = (100/8)MB/s = 12.5 MB/S

CPU速度

CPU的速度一般体现再CPU的时钟频率

CPU的时钟频率的单位一般是赫兹(Hz)

主流CPU的时钟频率都在2GHz以上

Hz其实就是秒分之一

并不是描述计算机领域所专有的单位

它是每秒钟的周期性变动重复次数的计量

2GHz = 2*1000^3 Hz = 每秒20亿次

计算机的字符与编码集

字符编码集的历史

中文编码集

这个部分可以去搜一下:这里简明扼要的说一下:

兼容全球阿字符集是Unicode

Unicode定义了世界通用的符号集,UTF-*实现了编码

UTF-8是以字节为单位对Unicode进行编码

Windows系统默认使用GBK编码

编程推荐使用UTF-8编码