计算机组成原理(一)

计算机组成原理(一)

计算机的发展历程

  • 电子管计算机
  • 晶体管计算机
  • 集成电路计算机
    • 集成电路是把电路元件集成在一个指甲盖大小的硅片上
    • 集成电路的电路元件有的是晶体管,有的是光刻电路
    • 半导体就是导电性介于导体和绝缘体之间,在其参杂入不同的杂质时,导电性也会发生相应的变化。可以在同一个硅平面内不同区域掺杂不同杂质,以获得不同的电性,组成相应的电子元件。
  • 超大规模集成电路计算机(当下计算机)
  • 量子计算机、生物计算机(未来的发展)

集成电路和芯片的区别?

芯片是集成电路的一种载体

拓展阅读

半导体、晶圆、光刻、芯片、集成电路全看懂

冯诺依曼体系

指令和数据存储到同一块内存中,存储程序指令,设计通用电路

任何数据必须加载到内存才能和CPU进行交互,如Java的字节码文件就必须使用ClassLoader加载到内存中,才能与CPU交互

五大组成:输入设配,存储器,控制器,运算器,输出设配

冯诺依曼体系:以**CPU**为核心

改进的冯诺依曼体系:以存储器为核心

冯诺依曼瓶颈:CPU和存储器速率不匹配

哈佛结构

哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。

冯▪诺依曼结构主要应用于通用计算机领域。
哈佛结构主要应用于嵌入式计算机中。

现代的CPU(准确说叫SoC[系统芯片])基本都不是纯粹的哈佛结构或冯诺依曼机构,而都是混合结构的,例如很多高级ARM芯片已经采用哈佛结构和冯诺依曼结构的结合

编译执行和解释执行

编译型语言:编译器,C/C++, Golang
解释型语言:解析器,Python, JavaScript, PHP
编译+解释:JavaC#
Python 之所以称为解释型语言,是因为它没有显示的调用编译操作(实际会编译成pyc后缀的字节码文件),
表现出解释型的特性比较多而已。但事实上,编译是存在的,具体怎么编译就看语言的实现了,也就是解释器的设计

区分是编译还是解析执行的意义并不大,而且要关注程序是如何运行的

计算机的层次结构

硬件逻辑层        门电路、触发器等、深入学习可以看数字逻辑
微程序机器层      编程语言是微指令集,微指令所组成的微指令直接交由硬件执行
传统机器层		 CPU指令集(机器指令,与硬件直接相关,如Intel和AMD的CPU指令集就不同)
操作系统层        硬件和软件的适配层,所以操作系统大都可以兼容不同的CPU指令集(Linux兼容性比Windows好)
汇编语言层        人类可读的语言,如PUSH,MOV等指令
高级语言层        如C/C++, Java等

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

计算机的度量单位

计算机只能识别0或1,这句话是。晶体管识别有无电流通过对应2进制,当然也可以根据电流的强弱对应其他进制
理论上3进制是最高效的进制(更加接近e),可以参考为什么进制接近e最有效率
使用2进制是因为2进制有布尔代数这个基础,而且电路设计简单
详见Crash Course Computer Science(p3-01:20)

容量单位

单位比例( 1 B = 8 b 1B = 8b 1B=8b, 1 K B = 1024 M B 1KB = 1024MB 1KB=1024MB)
bit1
Byte8
KB 2 10 2^{10} 210
MB 2 10 2^{10} 210
GB 2 10 2^{10} 210
TB 2 10 2^{10} 210
PB 2 10 2^{10} 210
EB 2 10 2^{10} 210

硬盘厂家通常是按照 1 G B = 1000 M B 1GB=1000MB 1GB=1000MB进行换算,所以硬盘容量常常缩水
硬盘实际容量计算公式, 500 G B = 500 ∗ 1000 1024 = 488.28125 G B 500GB = 500*\frac{1000}{1024} = 488.28125GB 500GB=50010241000=488.28125GB

国际单位制中TBGBMBKB1000进制的计数单位(但是计算机中还是 1 G B = 1024 M B 1GB = 1024MB 1GB=1024MB
为此国际电工协会(IEC)拟定了"KiB"、“MiB”、“GiB"的二进制单位

参考:百度百科—硬盘容量

速度单位

网速

10 M / s = 10 M b p s = 10 M b i t / s 10M/s = 10Mbps = 10Mbit/s 10M/s=10Mbps=10Mbit/s
10 M b i t / s = 1.25 M B / s 10Mbit/s = 1.25MB/s 10Mbit/s=1.25MB/s
所以10兆光纤实际速度最多只有1.25MB

CPU时钟频率

Hz,秒分之一,每秒重复次数的计量,如蜜蜂翅膀的震动频率大约为400Hz
人能听见的声音频率是20~20000Hz,蝴蝶的震动频率大约为15Hz,所以人耳听不见
2 G H z = 2 ∗ 100 0 3 H z 2GHz = 2*1000^3Hz 2GHz=210003Hz 每秒20亿次​

字符编码

数字和字符的对应关系

ASCII码及其扩展

刚开始只有7bit有对应字符,其他位置都空着,后来加上了数学符号、其他欧洲国家的语言符号以及其他常用的符号

由于大部分字符编码都向下兼容ASCII码(UFT-16好像不兼容),所以如果一个只有ASCII码的文件是不可能存在乱码的,这也是路径、文件尽量选择不带中文的原因(当然,最好不要有空格,因为Linux路径约定中建议避免使用空格、中文)

ASCII表及其扩展在线查询

GB2312GBK

  • GB2312:又叫国标2312,收录了常见的中文字符
  • GBK:向下兼容GB2312,收录了中日韩文字

UnicodeUTF-8

  • UnicodeUnicode只规定了字符和数字的对应关系,UTF-8UTF-16等实现了存储方式
    • UTF-8 可变长。它可以使用 1 - 4 个字节表示一个字符,根据字符的不同变换长度,兼容ASCII

扩展阅读

CPU做一个超强单核不行吗?技术可以实现吗?

从冯·诺依曼瓶颈谈起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值