动手学计算机类-快学计算机组成原理


主要是介绍计算机的基础知识,这是第一部分–计算机组成原理

计算机组成原理

计算机历史

重要的计算机器的历史人物和发明;

电子计算机

概念:继电器—类比成水龙头
继电器—>热电子管–>三级真空管
热电子真空管:热电级发射—一极加热发射电子,另一个电极吸引电子,形成电流; 单向流动的称为二极管;之后另一个发明家在这两个电极之间,加入第三个电极:控制电极;
三极真空管:向控制电极施加正电荷,允许电流流动;施加负电荷。阻止电子流动;这样就可以代替继电器,称为起到开关的作用,相比较来说不会产生磨损;但会烧坏;

晶体管发明

代替真空管控制开关的作用,一个全新的计算机时代诞生了;即半导体技术—通过控制门电极来达到控制导电或不导电;
现在一个晶体管达到小于50nm;并且不仅小,而且切换快;切换上百万次每秒;

晶体管和半导体的概念:

半导体制成晶体管,晶体管集成芯片
三极管的使用特性

布尔逻辑和逻辑门

两种值:true false ; 三种基本操作:not and 和or; 恰好用晶体管可以轻易实现上述逻辑;
晶体管之前只是用电来控制开关的方式; 三根线:两个电极和一个控制;就像水龙头;
使用晶体管来实现:门电路 分清谁是输入和输出
NOR门:
AND逻辑门:两个晶体管,串联在一起
NOR逻辑门:两个晶体管,并联在一起;
符号表示:三种门,是其他所有操作的基础
其他常见操作:XOR:用上面三种门来构造异或门,非常有用,虽然连接构造较复杂,但是我们可以把它放进工具箱里面了;向上抽象:不关心底层原理怎么实现的,只关注它的功能和使用方法;

二进制

电脑如何存储和表示数字;二进制,八进制,十六进制,是最常见的;
1字节=8位;
32位/64位计算机:意思是:每处理一块数据,每块是32位或者是64位,一块能表示最大的数;
正负数表示:第一位表示符号位;
Address:计算机给内存中的每一个位置,做一个“标记”;目的:是为了方便存取数据,现在内存增长到GB/TB,也要求着寻址数据大小,64位代表着寻址能力更大,同时一次读取更多的数据;
浮点数(好几种方法): IEEE 754标准 ;
文字表示:给字母编号,还是间接利用数字来表示;ASCII标准;–只用来表示英语母语国家;拓展到别的国家–UTF-8;
就像ASCII-标准用来表示文字的编码方式一样,MP3和GIF 用二进制编码 声音/颜色,表示照片,电影和音乐;
归根到底,就是一连长串位
二进制解决了计算机存储和表示数字的问题;

ALU-算术逻辑单元

历史最著名的ALU器件–Intel 74181
ALU有两个单元-1个计算单元和一个逻辑单元;使用到 AND OR NOT XOR逻辑门
一层层的向上抽象:当理解并承认基本原理知识后,就不再关心具体怎么运行的,想成一个工厂/盒子,关注输入和输出;
XOR+AND—>半加器+半加器+OR---->全加器-独立组件
为了使运算更快,不需要等待前一位运算结果,发明–超前进位加法器;
实时性要求不高的机器(恒温器等):把乘法换算成 加法,多执行几次;没有专门的乘法运算单元;
乘法单元:比加法单元只是稍微复杂一点,需要用到更多的逻辑门资源而已;
向上抽象:ALU被表示成一个大写的V字:代表着两个输入数,并操作代码告诉ALU执行什么操作。(1000=add,1100=减法),ALU还会引出很多标志:最基础的:溢出标志,0标志,负数标志;

寄存器和内存

内存:RAM,ROM
外存 :硬盘
之前的电路都是单向流,现在增加了回向:把输出再连回输入;
为什么增加回向流:有记忆功能了,保持逻辑有记忆性;Eg:AND门:永远保持0;OR门:永远保持1;—但这是永久的;
AND-OR锁存器:有设置位和复位 这两个输入:可以控制输出是0还是1;实现了锁存的效果,这就是 memory(存储)
逻辑门连线图

**我们不想不用关心单独的逻辑门,即向上一层抽象,把门锁放进一个“box(盒子)”即抽象成一个可以存取1个bit的盒子;盒子的功能就是–门锁–:可以存取1个bit,保持不变;
抽象成 "盒子-门锁"图

有:输入线、允许读/写线 、输出线
什么是寄存器?Register
一组锁存器叫寄存器,多少个锁存器就叫多少位寄存器。发展有8位寄存器,16位寄存器和32位寄存器,现在基本都是64位寄存器。
64位寄存器:需要64根数据线(输入线),64根输出线,1条线控制读/写线,总共129线
但是如果要存256位就要高达513线,所以通过使用矩阵。16X16个锁存器按矩阵放置。
行阵排列法:用一根“允许写入线/允许读取线”连所有锁存器。共只要35条线:1根数据线,1条允许写入线,1条允许读取线,还有16行和16列的线用于选择锁存器。

多路复用器:Multiplexer;向上抽象就是一个256位的内存;扩大存储规模,就是并排列在一起。向上抽象就是一大块整体连续的可寻址内存。地址不需要自己操心,操作系统自动给分配好。
内存地址:8位代表256个内存地址,也即256个字节。一个地址等于8位一个字节。
所以要想需要更大的内存位置就要需要更多的内存地址
内存的一个重要特性:可以随时访问任何位置。
RAM分类:SRAM DRAM Flash memory NVRAM.功能都是与SRAM相似的,区别只是使用不同的电路存储 “位”。例如,使用逻辑门 电容器,电荷捕获 或 忆阻器。但是所有的都是矩阵层层嵌套,来存储大量信息。

小结概念

AND-OR锁存器 盒子 寄存器 RAM(随机读写存储器)

中央处理器 CPU

重点:1、组装CPU 2、CPU怎么执行命令
计算逻辑单元ALU:输入二进制,会执行计算;
两种内存:register寄存器,每次只能存一个值。
RAM是利用矩阵扩大的内存,能在不同地址存储大量数字。

CPU运行

第一个阶段:取指令阶段 : fetch
第二个阶段:译码阶段 :deode
第三个阶段:执行阶段:execute

CPU包含: 控制单元 + ALU计算逻辑单元+ 若干寄存器 +时钟(时钟频率)
RAM:是在CPU外面的独立组件,CPU和RAM 之间用“地址线”+“数据线”+“允许读/写线”进行通信。

指令和程序

重点:1、给CPU指令,一步步带你运行一遍程序
CPU之所以强大是因为他是可编程的,写入不同指令,就会执行不同任务。即是一块硬件,很容易被硬件控制。

两位数相加例子

四个指令下的两个数相加:load_A load_B STORE_A ADD
冯诺依曼体系下的计算机结构:程序和数据都存储在同一个内存里面的,本质上没有区别,都是二进制数。

指令

这里指令是8位:前4位是操作码—>指令(最多16条),后四位是地址------>数据值(最多十六个值)
解决方法:
1、更多位来代表更多指令:32位或64位,这个叫指令长度。
2、可变指令长度:
指令集越来越多,是因为给CPU设计了越来越多的功能。

高级CPU设计

如何快速传递数据给CPU?

超高的时钟速率带来一个问题:如何快速传递数据给CPU,即CPU和外部RAM之间的通信速度匹配问题? 类似空有强大的蒸汽机,却无法快速加煤?

法一:添加cache

给CPU里面加一点RAM–called cache。和外部RAM硬件上没有什么不同但是因为更靠近CPU,所有传输速度更快。因为cache集成在CPU中,内存很小:但是却可以CPU从RAM拿数据时,RAM不用传一个,而是可以传一批。但是数据可以先存在cache里,CPU不用空等。可能数显问题: cache hit /cache miss

法二:PiPline—流水线技术

fetch–decode–execute: 不同任务重叠进行,这样会用上CPU里面的所有部分,流水线技术,每个时钟周期执行一个指令,但是吞吐量X3。
可能出现的问题:
问题一:指令之间的依赖关系。解决方法1:乱序执行
问题二:条件跳转问题,解决方法1:空等,等到条件确定值下来。解法2:推测执行接下来的执行指令。这些方法本质都是提高吞吐量。

解法三:多核处理器(双核或四核处理器)

意思是一个CPU芯片里面有多个独立处理单元,运行时像是由多个独立的CPU,但是共享一些资源:cache,可以多核之间合作运算。多个CPU使用,一般这个是用在服务器上面搭载运行,或者是更强大的计算速度。
我们的任务就是充分利用好现在已有的运算处理能力,去做cool and useful 事情,即重心在编程上
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值