5 南方铁匠

尚未进行身份认证

我要认证

在深度学习和体系结构熔炉的铁匠

等级
TA的排名 1w+

【论文导读】Deconstructing Commit

在微架构中,我们使用Reorder Order在commit时保证in order的顺序,一般retire的方式都是等待指令成为oldest,然后retire,这样保证了architecture state和precise exception等。但是实际上指令可能已经满足了retire的条件,只是因为该指令前面有指令一直没有执行完毕,导致需要持续的等待成为oldest,但是它实际上占据了physical register,register map entry,reorder buffer entry和LS

2020-10-26 11:11:50

How to Measure Reorder Buffer Capacity

衡量Reorder Buffer Capacity 的大小的方法微处理器中取指译码重命名时顺序的,commit也是顺序的…reorder buffers是一个fifo,用来跟踪指令的status。指令在dispatch后,按照program order在ROB中排序。起到以下作用:recover from branch mispredictionretire state to register and memory in program orderprovide precise interrup

2020-10-25 17:56:03

【论文导读】Cache Decay: Exploiting Generational Behavior to Reduce Cache Leakage Power

处理器的memory system中存在相当数量的dead block(即最后一次touch直到被选择victim cacheline替换出去的cacheline)。这些cacheline的存在会增加系统的静态功耗,即Leakage Power。统计上dead time占总体时间的30%。对cacheline设置为dead的策略:当维持cacheline的所需要的静态功耗等于从下一级cacheline取数据所消耗的动态功耗时,则可以将cachline 设置为dead。经过统计之后,从L2获取数据所消

2020-10-17 18:30:32

【论文导读】 Complexity-Effective Multicore Coherence

目前通用的维护cache 一致性的就是通过MESI或者MOESI来标志cacheline的state,在访问相同的数据时,会进行broadcast或者使用directory的方式进行记录。论文采取了新的一致性策略VIPS以及改进的版本VIPS-M来进行已执行的维护,即不需要broadcast,也不需要维护directory。dynamic write policy 将写回和写直达动态结合,利用了写直达不需要维护cache 一致性的优点selective flush 如果当前的core想要写数据,但是

2020-10-17 11:09:08

X86指令:NOP指令

NOP指令的作用通常NOP用于对齐指令的地址。NOP指令的特性:因为NOP是X86指令中最短的,只有1byte处理器执行NOP指令时,不进行任何的操作,不会影响系统的状态NOP也有其他的用途:1)编程时如果使用了支持lable标记的编译器,如果使用JXX someLabel1(JXX是条件跳转),编译器将会将someLabel替换为Label对应的地址。然而如果我们手动修改了汇编代码,那么指令的长度就会发生了变化,Label的地址也会发生变化,因此可以使用NOP来将Label的地址恢复到之前

2020-10-04 17:28:33

Cache Replacement Policy: Cache 替换策略

cache 是 CPU和memory中间的缓存,如果访问时选中的set已经满了,就需要从set中选择一个wayLeast recently used (LRU) replace最近最少使用的block。算法记录访问的cache block以及时间顺序,完整的实现这个方式代价比较大。实现时需要为每个cache line记录“age bit”,基于age bit 记录“Least Recently Used” 。每次访问cache-line,所有的其他的cachline的age都需要修改。如果访问顺序是

2020-09-26 15:06:11

读书笔记:C++ 进阶心法

默认构造函数,变量的值是随机值,字符串是空串类中有const类型的常量,不能构造函数中初始化,而需要在初始化列表中初始化 多重继承,如果多重继承的基类是同一个,那么就会存在基类被复制多份的问题,需要使用虚继承解决因为会存在使用父类指针指向子类对象的情况,在调用析构函数时,如果父类的析构函数不是虚函数,那么在delete父类指针时,不会按照多态的方式而去调用子类对象的析构函数。所以,父类的析构函数需要写成虚析构函数...

2020-09-12 16:42:42

Memory Type: WB, WT, UC, WC,WP

Memory Type:目前的主流处理器,都支持这些memory type Write Back, Write Through, Write Protect,Uncacheable Write, Write CombineWrite Back最常见的 cacheable write, read → modify→ writeWrite Throughcachable readwrite:when hit in cache, update cache and memorywhen miss

2020-09-05 20:35:38

non temporal memory access

下面代码中“NT”代表Non Temporal,指的是什么?MOVDQA xmmi, m128MOVNTDQA xmmi, m128 Non-Temporal SSE指令(MOVNTI,MOVNTQ,etc.) 不遵循普通的cache 一致性的守则,因此这些指令后面需要增加SFENCE以保证它们的结果可以被其他的处理器按照期望的时序看到。正常的数据,我们如果修改了,存储到cache里,是按照read-modify-write的顺序修改的,如果我们所修改的数据并不会立刻再次被使用,那就没有必要装载到

2020-09-03 21:34:12

Memory Consistency (下)

Memory Consistency文章目录Memory Consistency三、 弱序 Memory Model3.1 Weak Memory Model3.2 Release Consistency Model三、 弱序 Memory Model3.1 Weak Memory Model在实际的编程过程中,我们发现不相关的memory的访问的order,我们并不在意。真正在意的是,存在对内存读写访问冲突的情况。所以在weak memory model中,我们可以放松对consist

2020-08-30 23:53:24

Microarch Paper :Value Locality and Load Value Prediction

Value Locality and Load Value Prediction前言 Paper作者发现value同样具有locality,尤其是load指令,经常会反复的从memory中加载相同的数值,因此他们提出了新的架构,类似于分支预测,对load加载的数值进行预测。一、 Value Localityvalue locality体现在以下的方面:不过作者也指出,value locality受编译器影响较大,因为子表达式优化可能会解决这部分的问题。二、工作原理1. Load Valu

2020-08-29 12:38:15

Memory Consistency(上)

Memory Consistency提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Memory Consistency Model介绍文章目录Memory Consistency前言一、Memory Consistency Model是什么?二、各个memory order介绍1.sequence order2. strong order总结前言Memory Consistency Model 介绍一、Memory Consistency Model是什

2020-08-24 00:55:33

汇编:静态变量与RIP

在线看汇编的网站:https://godbolt.org/在class A中定义一个静态变量,然后对其进行操作,我们看看这个静态变量的是怎么被操作的。 #include "stdlib.h"class A{ public: static int test0; static int test1;};int A::test0 = 1;int A::test1 = 1;int main(){ A::test0 = 4; A::test1 =...

2020-08-17 22:28:13

Microarchitecture:Micro Fusion

MicroFusion Tech在没有进入Micro Fusion技术之前,单条复杂指令需要被译码为多条uops。Micro-fusion 技术则会将这些这些uops进行融合为一个单条的复杂micro-op。在之前如果被译码为N条uops,以在乱序core中执行,那么这个单条的复杂micro-op也同样需要被执行N次。本质上MicroFusion 就是将复杂指令使用复杂uop表示,在译码之前,复杂指令只占用一条entry,而在译码之后,该uop只占用一条ROB,但是该uop会在多个...

2020-08-09 21:16:30

The Infinity Fabric

现在有大量的预测与证据说明更快的memory速度提高了Ryzen的游戏性能。这个理论基于AMD的Infinity Fabric 与内存时钟频率绑定。并且我们的一些针对性的测试也证实了这一点。Zen架构又一次使用了四核CCX(CPU Complex)模块。AMD为每个CCX提供了16路组相连8M的L3Cache。8M的cache被分为4个slice,每个core访问L3的延迟是相通的。两个CCX在一起就形成了8核Ryzen 7的die。CCX通过AMD的Infinity Fabric互联。多个CCX也共享.

2020-07-19 11:09:07

AMD 编程手册 7.4-7.5

Contents7.4 Memory Types7.5 Buffering and Combing Memory Types7.4 Memory Types UC Uncacheable 从UC Memory中读取或者写入会导致write buffer的数据写到内存然后失效。主要用于需要严格的读写顺序的I/O 操作。注意如果其他的memory如果支持Speculative读,那么可能会bypass那些没有冲突的UC操作。 CD Cache Disable. Uncachebale 包括两种情况1

2020-07-18 17:42:48

CPU Memory: 为什么需要使用互斥量mutex

多线程的变成需要使用旗语,同步代码段,互斥量或者是任何调用它们的编程语言。我们大多数基本上知道为什么我们需要它们:为了阻止多线程访问同一块内存区域。你是否停下来真正想过,它们究竟是干什么的?为什么你需要保护存储空间?这个听上去应该是CPU该干的活。大多数是的时候,互斥量也就是一个简单的实现,但是理解为什么需要它却没那么容易。这个答案在于CPU是如何组织存储的,以及它是如何优化你的代码的。...

2020-07-11 21:05:28

互斥量mutex是如何工作的

并发变成要求同步。同一时刻不能有超过一个线程处理数据,否则我们就会遇到数据竞争。最常见的做法就是将关键数据的访问权限放置到mutex中。mutex当然不是免费的。mutex可以严重的影响我们编写的代码的性能。当正确使用的时候我们很难注意到mutex引入的性能支出。但是错误的使用的时候,可能多线程的性能还比不过单线程。 互斥量mutex,最基本的形式就是内存中的一个整数。这个整数基于mutex的不同状态可以有不同的值。当我们讨论mutexes的时候,我们也会需要讨论锁机制。存储在存储器的中的整数并不有趣,.

2020-07-08 00:47:49

断点是如何工作的

Overview在调试代码时,一个常见的问题就是断点到底是怎么工作的。另一个问题就是软件断点和硬件断点有什么不同,我应该选择哪种。本文将会深入的介绍软件和硬件断点的不同。也会更加详细的提供Code Composer Studio 和 Target的内部工作机制。并且,也会讨论特殊的断点的case和高级用法。 Abbreviation Used t CCS - Code Composer Studio (用于 TI DSP、微处理器和应用处理器的集成开发环境)t HWBP Hardware Brea.

2020-07-05 21:46:14

CPU Wiki: Sandy Bridge Microarchitecture 后端

Execution EngineSandy Bridge 的后端执行单元处理乱序执行。Sandy Bridge的back end将NetBurst和P6进行了融合。像P6一样,Sandy Bridge 独立的处理三种类型的uOPs(浮点,整型和向量)。然而实现的方式却十分不同。Sandy Bridge 借鉴了NetBurst中更加高效的追踪tracking和重命名renaming架构。Sandy Bridge 以下简称SNB使用了NetBurst中基于物理寄存器文件(PRF)的重命名机制进行追踪。在之

2020-06-17 01:29:14

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。