作者注:
限于能力和时间,文中定有不少错误,欢迎指出,邮箱yixiangrong@hotmail.com, 期待讨论。由于绝大部分是原创,即使拷贝也指明了出处(如有遗漏请指出),所以转载请表明出处http://www.cnblogs.com/e-shannon/
http://www.cnblogs.com/e-shannon/p/7495618.html
2.1 背景
2.1.1 行业背景
2013年8月由IBM、Google 、NVIDIA等公司联合成立成立了OpenPower 基金会, 其目的是通过建立开源Power生态系统,在warehouse data center(仓储式数据中心)、HPC(高性能计算)等服务器领域与intel展开竞争技术背景以及开放式总线接口
由于在大数据/云计算/HPC(超算)/人工智能(深度学习)等大计算大存储领域,单靠CPU性能提升无法胜任越来越复杂的高运算量的需求。最近的趋势显示
CAPI里的coherent是指cache coherency。而理解cache coherency,需要从cache的认识入手,对于cache熟悉的读者可以略过本节,以下均是自己不专业地从网上搜罗整理。 由于CPU运算速度要比内存读写速度快很多,这样会使CPU花费更多时间等待数据到来或把数据写入内存。内存一般由高密度的动态内存DRAM组成,所以其访问速度相对慢于CPU速度(需要行地址和列地址,以及刷新操作,等待周期等,并且功耗大)。 现代计算机中一般在CPU和内存之间插入了一个SRAM,作为cache,用于解决CPU速度运行速度快和内存访问速度相对慢的矛盾。CPU不再能直接访问内存访问方式
如上图所示,CPU无法直接访问内存,只能沿着Register —> L1 Cache —> L2 Cache —> L3 Cache —> Memory —> Mass storage的层次结构进行访问。CPU访问内存则存在4种方式, 读写各两种,读有 look through 和 look aside方式,写有 write through 和write back Look through:指的是CPU读请求只能发给cache,如果命中则cache回内容给CPU,结束本次访问。如果没有命中(hit),则cache将读请求发给内存。 Look aside: 则是CPU的读请求同时给cache和内存cache line
Cache的内部结构含有内存地址和cache内部地址映射关系,以及存储内存数据的单元。 Cache line是cache加载内存的基本操作单位,每次加载一个cache line而不是一个字节。大小是32(较早的ARM、90年代/2000年代早期的x86和PowerPC)、64(较新的ARM和x86)或128(较新的Power ISA机器)字节,(yxr注:cache line大小可能和DRAM内存的内部结构有关,一个基本内存访问的基本操作可能是8个时钟的数据,而数据线宽度为32,64,128bit (注意不要跨DRAM的bankCache Coherency
以上介绍了单CPU核的单个Cache的内部组成,当多个CPU的多组cache在一起工作时,就牵涉到cache的一致性。CAPI里的Coherent指的是cache Coherency系统
在Power多
[dream1](服务器市场现在几乎是intel的天下?是这样吗,据说IBM的小型机性能远超intel x86,且高端市场主要用IBM小型机,其稳定性和性能扩展性远超intel。但是由于采用计算机群技术,通过分布式计算解决了稳定性和性能提升,所以基于intel的处理器的服务器反而处于优势地位。而IBM小型机非常贵,包括CPU也很贵,所以现在IBM推出OpenPower,估计也是针对这个问题,仿效arm,基于IP,降低CPU价格,其他厂家也能生产PowerCPU [dream2]https://www.nextplatform.com/2016/10/17/opening-server-bus-coherent-acceleration/ What is going on here is that we are re-architecting the system,” Brad McCredie, the former president of the OpenPower Foundation and an IBM Fellow and vice president of development in IBM’s Power Systems division, tells The Next Platform. “No matter how you slice it, the processor is not improving cost/performance at the incredible rate and pace that it had in the past. And yet there is still this ever-growing demand for more and more compute capability, driven by these new workloads of artificial intelligence as well as simulation and analytics, there is this huge appetite to still produce more advanced systems. Less and less value is being driven by CPUs and more and more is being generated by accelerators, new memory technologies, and lots of crazy innovations that are attaching to processors. The value is shifting around, and in order to have the ability to mix and match technologies, we are going to need standards and Google, Hewlett Packard Enterprise, and Dell EMC see this very plainly.” [dream3](213_CCIXGen-Z_BBenton.pdf,CCIX,Gen-Z,OpenCAPI_Overview&Comparison.pdf) [dream4]但是也有的CPU可以旁路cache,直接访问内存,这个应该和CPU有关,引出了更多的信号同时给cache和内存 [dream5]具体多少,不清楚yxr..如下一段话虽然是硬盘,也能说明些问题。 硬盘的cache也有助于改进性能。虽然16MB的cache只能覆盖整个磁盘容量的0.002%,可别看cache只有这么一点大,其效果十分明显。它可以把一组零散的写入操作合成一个,也就是使磁盘能够控制写入操作的顺序,从而减少寻道的次数。同样的,为了提高效率,一系列读取操作也可以被重组,而且操作系统和驱动器固件(firmware)都会参与到这类优化中来。 [dream6]没有听说四级缓存 [dream7]三级缓存的作用明显吗?提高效能呢 [dream9]是SRAM吗? [dream10]1)有这种应用吗 2)物理上芯片实现上是否单独引CPU信号给内存?还是在cache中透传信号给了内存 [dream11]其实这个叫look through似乎更好,和write through一致嘛 [dream12]怎么有的网站 [dream13]我们已经知道,一个cache line对应的是主存中连续的几个字,那么这些字的低位对于映射一个cache line是没用的,比如说在一个32位系统中,一个cache line的大小是16个字,也就是64个字节,cache读取memory的数据时按照,cache line的尺寸读入,所以编程时组织数据结构,按照cache line的方式能够提升效率 [dream14]这里自己理解的并无信心, [dream15]理解正确否? [dream16]正确否? [dream17]是这样吗?为啥在openCAPI中,还提到V3.30的openCAPI仅仅支持memory coherent,而不支持cache coherent(见CCIX,Gen-Z,penCAPI_Overview&Comparison.pdf 的page9) [dream18] 为达到cache conherency,cache访问引入了MESI状态(梅西,四个字母代表四种状态),各个core之间需要相互通信,完成各个状态的装换,保证cache的一致性。 [dream19]这让我想起在TCP/IP offload中自己设计的的如何将TCP的访问无阻塞被各个模块使用,也是窥探也是采用总线通知收发模块以及Timer模块。蛮佩服自己的,^_^。可以多学习些控制协议!计算机专业的书记 [dream20]从(http://www.csdn.net/article/2015-06-17/2824990 介绍中似乎power系统采用directory方法,2.2.1 浅析Cache