计算机组成 -- 知识地图
|Word Count:15|Reading Time:1mins
参考资料
Author: zhongmingmao
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles

2020-01-19
计算机组成 -- Superscalar + VLIW
吞吐率 程序的CPU执行时间 = 指令数 × CPI × Clock Cycle Time CPI = Clock Per Instruction IPC = 1/CPI = Instruction Per Clock 一个时钟周期内能够执行的指令数,代表了CPU的吞吐率 最佳情况下,IPC只能到1 无论做了哪些流水线层面的优化,即使做到了指令执行层面的乱序执行 CPU仍然只能在一个时钟周期内取一条指令!! 无论指令后续无论优化得多好,一个时钟周期也只能执行一条指令,IPC只能是1 但Intel CPU或者ARM CPU,一般IPC能做到2以上 多发射 + 超标量 整数计算过程和浮点数的计算过程差异比较大 整数计算和浮点数计算的电路,在CPU层面是分开的 一直到80386,CPU都是没有专门的浮点数计算的电路的,当时的浮点数计算,都是通过软件进行模拟的 在80386时代,Intel给386配了单独的387芯片,专门用来做浮点数运算 386dx:带387浮点数计算芯片 386sx:不带387浮点数计算芯片 CPU会有多个ALU,在...

2020-01-27
计算机组成 -- MESI协议
缓存一致性问题 iPhone降价了,要把iPhone最新的价格更新到主内存里,为了性能问题,采用写回策略 先把数据写入到L2 Cache里,然后把Cache Block标记为脏的 此时数据其实没有被同步到L3 Cache或主内存里 1号核心希望在这个Cache Block要被交换出去的时候,数据才写入到主内存里 此时2号核心尝试从内存里读取iPhone的价格,就会读取一个错误的价格 缓存一致性问题:1号核心和2号核心的缓存,此时是不一致的 同步机制能够达到的目标 写传播(Write Propagation) 在一个CPU核心里面的Cache数据更新,必须能够传播到其他对应节点的Cache Line里 事务串行化(Transaction Serialization) 在一个CPU核心里面的读取和写入,在其他节点看起来,顺序是一样的 事务串行化 1号核心先把iPhone的价格改成5000,差不多时间,2号核心把iPhone的价格改成6000,这两个修改会传播到3号核心和4号核心 3号核心先收到2号核心的写传播,再收到1号核心的写传播;4号核心刚好相反 虽然写传播做到了,...

2020-01-29
计算机组成 -- 总线
设计来源:降低复杂度 计算机内部有很多不同的硬件设备,除了CPU和内存,还有大量的输入输出设备 如果各个设备间的通信,都是互相之间单独进行的,如果有N个不同的设备,他们之间需要各自单独连接,那么系统复杂度为**$N^2$** 为了简化系统的复杂度,引入了总线,把**$N^2$复杂度,变成了$N$**的复杂度 CPU想要和什么设备通信,通信的指令是什么,对应的数据是什么,都发送到这个线路上 设备想要向CPU发送什么消息,也发送到这条线路上 这条线路好像一个高速公路,各个设备和其他设备之间,不需要单独建公路,只需要建一条小路通向这条高速公路即可 总线(Bus),其实就是一组线路,CPU、内存、输入输出设备,都是通过这组线路,进行相互间通信的 设计模式:事件总线 在大型系统开发的过程中,经常会用到一种叫作事件总线(Event Bus)的设计模式 系统中的各个组件之间需要相互通信,如果两两之间单独去定义协议,复杂度为**$N^2$** 各个模块触发对应的事件,并把事件对象发送到总线上,即每个模块都是一个发布者(Publisher) 各个模块也会把自己注册到总线上,去监听总线上的事件 并根据事件的对...

2020-02-02
计算机组成 -- SSD
对比 访问类型 机械硬盘(HDD) 固态硬盘(SSD) 随机读 慢 非常快 随机写 慢 快 顺序写 快 非常快 耐用性(重复擦写) 非常好 差 读写原理 CPU Cache用的SRAM是用一个电容来存放一个比特的数据 对于SSD硬盘,由一个电容加上一个电压计组合在一起,就可以记录一个或多个比特 分类 SLC:Single-Level Cell MLC:Multi-Level Cell TLC:Triple-Level Cell QLC:Quad-Level Cell QLC 想要表示15个不同的电压,充电和读取的时候,对精度的要求就会更高,这会导致充电和读取的时候更慢 QLC的SSD的读写速度要比SLC慢上好几倍 PE擦写问题 控制电路 常用的是SATA或者PCI Express接口,里面有一个很重要的模块:FTL(Flash-Translation Layer),即内存转换层 FTL是SSD的核心模块,SSD性能的好坏很大程度上取决于FTL的算法好不好 实际的IO设备 新的大容量SSD都是3D封装的,即由很多裸片(Die)叠在一起(跟HDD有点类似)...

2020-01-24
计算机组成 -- 存储层次结构
SRAM CPU类比成计算机的大脑;而正在思考的东西,可以类比成CPU中的寄存器(Register) 寄存器更像是CPU本身的一部分,存放极其有限的信息,但速度非常快,和CPU同步 大脑中的记忆,类比成CPU Cache(高速缓存) CPU Cache使用的芯片是SRAM(Static Random-Access Memory,静态随机存取存储器) 静态:只要处于通电状态,里面的数据就能保持存在,而一旦断电,里面的数据就会丢失 在SRAM里,1个比特的数据,需要6~8个晶体管 所以SRAM的存储密度不高,同样的物理空间下,能够存储的数据有限 SRAM的电路简单,所以访问速度非常快 在CPU里,通常会有L1、L2、L3这三层高速缓存 L1 Cache 每个CPU核心都有一块独占的L1 Cache,通常分为指令缓存和数据缓存 L1 Cache通常嵌在CPU核心的内部 L2 Cache L2 Cache同样是每个CPU核心都有,但往往不在CPU核心的内部,因此L2 Cache的访问速度会比L1 Cache稍慢 L3 Cache L3 Cache通常是多个CPU核心共用的,尺寸更大,访问速度...

2020-01-01
计算机组成 -- First Draft
从输入设备读取输入信息,通过运算器和控制器来执行存储在存储器里的程序,最终把结果输出到输出设备中 参考资料深入浅出计算机组成原理
Announcement
Things are always unexpected!





