【《计算机组成 结构化方法 第6版》】04、了解性章节(4、5、7)

如果没有学过微机的看4(微体系结构层)、5(指令系统层,即ISA层)、7(汇编语言)章估计很郁闷。由于我是电子专业,读书的时候做过一些嵌入式开发和比赛,现在转做java感觉这几章对做java开发的来说不太重要,可以当做增加知识面了解下。第5节讲思想的部分还是值得看的。
如果研究JVM的字节码,这几章倒是可以做个铺垫。

简述

微体系结构层的作用是实现位于其上的指令系统层(ISA),简单的说就是实现汇编语言。
ISA层是编译器和硬件之间的接口,它是一种硬件和编译器都能理解的语言。
ISA

提高CPU性能

私以为4、5章和平时开发做紧密的就是4.5节,值得反复看,理解其中的设计思想。但是这部分我觉得看《计算机体系结构 量化分析方法》更好,不过作为入门了解,对做开发的程序员来说也够了。

高速缓存

多级缓存

cache用来填补CPU和内存之间的速度差异。它里面存放的是最近刚被使用到的内存字。
现代的计算机多使用三级缓存技术。

  • 一级缓存:芯片内部,通常为16~64KB,分为指令缓存和数据缓存。每个cache都可以独立地读写内存,这使得存储系统的带宽增大一倍
  • 二级缓存:芯片旁边,通过高速通道与CPU相连。通常为512KB~1M,是通用的cache,既包括数据也包括指令
  • 三级缓存:CPU之外,通常为4~8M。访问速度比内存快的多。

cahce的内容是逐级包含的,3级cache中包含了2级的全部内容,2级cache中包含了1级cache的全部内容。
3级缓存

两个思想

实现cache的两个重要思想是空间局部性原理时间局部性原理

  • 空间局部性:最近被访问的地址附近的地址很可能在将来被访问。cache使用这种特性一次把比实际需要的更多的数据调入,希望它们将来能被用到。
  • 时间局部性:最近访问的地址将会被再次访问,比如循环指令。当cache不命中时,通过LRU算法来替换数据项。

工作方式

所有的cache都使用下面的模型。主存被分成固定大小的称为cache块的块。一个 cache块通常由4 ~ 64个连续的字节组成。cache块从0开始连续编号,因此如果使用32个字节的块,块就是字节0 ~ 31,块1就是字节32 ~ 63,依次类推。
任何时候都有某些块位于高速缓存中。当需要访问内存时,cache控制器电路检查需要访问的字是否在cache块。.如果在,就使用该值,这样可以节约一次内存访问。如果该字不在内存中,将从cache 中移去某些块,并用从内存中或者从更低级别的cache中取出的块替换这些块。替换时有多种机制,但是其基本思想是在cache中保存最常用的块,这样可以最大限度地提高cache命中率。

实现方案

直接映射的cache和组相连的cache是最常见的加速内存访问的高速缓存。

分支预测和推测执行

说白了,分支预测就是通过分析程序历史运行记录,来对下一步进行预判。通常由静态分支预测和动态分支预测。
实现很复杂,偏硬件,书里描述的也比较复杂,可以参看这篇博文

推测执行是在分支预测的基础上实现的一种预测机制。

乱序执行和寄存器重名

这节也很复杂o(╥﹏╥)o。只需知道CPU不是完全按顺序执行指令的,而是通过指令重排,乱序执行指令,以获得更好的性能

CPU即使使用流水线和超标量技术使得速度提高了数倍,但是当指令之间存在相关性时,就会打破这种提升。比如某条指令需要用到前一条指令的计算结果,这就使得第二条指令必须等待。为了克服这些问题以达到更好的性能,某些CPU可以跳过相关的指令执行后面不相关的指令。由内部的指令调度算法来保证程序的运行结果和按照顺序执行时的结果相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值