L1 DCache (L1D)

L1D指的是一级数据缓存,通过缓存内部的数据结构(即硬件逻辑),管理所有类型的读存与访存请求:

  • 允许投机式,乱序发射读存与写存请求
  • 确保退役的读存与写存指令在退役时具有正确的数据
  • 确保读存与写存操作遵循IA32与Intel 64指令集架构定义的访存顺序规则

表:L1D的构件

Component

Sandy Bridge

Nehalem

DCU – Data Cache Unit

32KB, 8 ways

32KB, 8 ways

Load Buffers

64 entries

48 entries

Store Buffers

36 entires

32 entries

Line fill buffers (LFB)

10 entries

10 entries

DCU的容量是32K字节大小,8路组相联;DCU缓存行大小是64字节,组织在8个存储体中(即每个存储体保存8个字节)

在DCU内部,每次访问可达16字节,如果是256位Intel AVX指令操作则执行两个16字节访问。每个周期可以同时处理两个读存操作与一个写存操作。

L1D会维护不能立即完成的访存请求。导致访存延迟的因素有:缓存未命中,跨缓存行的非对齐访问,来自于前一个写存操作的数据还不能进行转发,读存操作遭遇存储体冲突,读存由于缓存行需要被替换而阻塞。

从微指令分配阶段直到退役阶段,L1D可以维护最多64条读存操作(注:正好是读存缓冲区的容量);可以维护最多36个写存操作(注:写存缓冲区容量),从分配阶段直到数据被提交到DCU中,或者对于非时效写存操作,直到数据写入到行填充缓冲区LFB中。

L1D可以处理多个未完成缓存未中事件,持续的为读存与写存操作提供服务。使用LFB缓冲区,可以同时管理最多10个缓存行未中请求。

L1D是回写式写分配(write-back write-allocate)高速缓存。回写式指的是命中DCU的写存操作不会更新更低层级的存储器(即不更新L2,L3和memory)。写分配指的是未命中DCU的写存操作会导致在DCU中分配一个新的缓存行。

Loads

L1D架构可以每周期服务两个读存操作,每个操作可以请求最大16字节长的数据。最多可以维护32个处于不同阶段的读存操作,从乱序引擎的分配阶段直到将数据传输到执行核阶段。

读操作可以:

  • 尽管在指令顺序上写操作位于读操作之前,但是如果已知读操作地址与写操作地址没有冲突(即地址没有重叠或不相等),则读操作可以在写操作之前发生(即乱序执行)。
  • 在前面的分支指令被计算决断之前,可以投机式地执行读操作。
  • 以乱序且可以重叠的方式处理缓存未中情形

读操作不可以:

  • 投机读不能产生任何处理器故障或陷阱
  • 投机读不能访问非缓存的(uncacheable)存储器区域。

通常,读存操作时延是5个周期。当使用简单寻址模式时,即基址参量加上小于2048的位移量,这种类型的读存时延是4个周期。这种技术对指针追逐代码(pointer-chasing code)尤其有用。但是,由于执行栈旁路效应,整体时延会根据目标寄存器数据类型产生变化。

表:寻址模式对读操作的影响

Data Type/Addressing Mode

Base + Offset > 2048;

Base + Index [+ offset]

Base + offset < 2048

Integer

5

4

MMX, SSE, 128-bit AVX

6

5

x87

7

6

256-bit AVX

7

7

Stores

写存操作实际上分两个阶段执行:

  • 执行阶段。把写操作的线性地址,物理地址,与数据填充到写存缓冲区。一旦地址和数据可用(即位于写存缓冲区中),数据即可被转发给后续需要的读存指令。
  • 完成阶段。在写存指令退役后, L1D将数据从写存缓冲区移到DCU,每周期最多16字节。

Address Translation

DTLB每个周期可以执行总共三个线性地址到物理地址的转换操作,两个为读存操作,一个为写存操作。如果要转换的地址不在DTLB中(即DTLB未中),处理器会继续查找STLB(同时保存指令页面与数据页面的转换信息)。如果DTLB未中但是STLB命中,性能损失是7个周期。除了4KB,2MB/4MB的页面,大页面转换支持还包括1GB页面。

表:DTLB和STLB参数

TLB

Page Size

Entries

DTLB

4KB

64

2MB/4MB

32

1GB

4

STLB

4KB

512

Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (15) - L1数据缓存/读写地址转换相关推荐

  1. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (16) - L1数据缓存/存储转发访存消歧存储体冲突

    Store Forwarding 如果读存操作紧跟着写存操作,且要读取的数据包含在要写入的数据中,则数据可能可以从写操作直接转发给读操作.这个过程叫做"存储-读取转发",简称为&q ...

  2. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (1) - 特性概述

    Intel Sandy Bridge/Ivy Bridge Microarchitecture Intel Sandy Bridge微架构继承了Intel Core微架构与Nehalem微架构的成功之 ...

  3. Intel Haswell/Broadwell架构/微架构/流水线 (2)-流水线前端

    The Front End 除了继承了Sandy Bridge/Ivy Bridge微架构的前端特性,Haswell微架构对流水线前端做的额外增强如下: 微指令缓存(uop cache,即decode ...

  4. Intel, AMD及VIA CPU的微架构(39,完)

    21. 微架构的比较 已经调查的最先进微架构代表了不同的微架构核心:AMD,Pentium 4(NetBurst),Pentium M与Intel Core 2核心.现在我将讨论这些微架构的优缺点.我 ...

  5. Intel Haswell/Broadwell架构/微架构/流水线 (8)-Broadwell微架构

    The Broadwell Microarchitecture Intel Core™ M处理器基于Broadwell微架构.Broadwell微架构从Haswell演进而来同时还提供了多种增强.本节 ...

  6. Intel Core Enhanced Core架构/微架构/流水线 (3) - 流水线概述

    Intel® Core Microarchitecture Pipeline Overview Intel Core微架构的流水线包括: 有序发射前端,从内存中获取指令,利用4个指令译码器将x86指令 ...

  7. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (20) - IvyBridge微架构

    Intel® Ivy Bridge Microarchitecture 第三代Intel Core处理器是基于Ivy Bridge微架构的.上述的Sandy Bridge微架构的特性也都适用于Ivy ...

  8. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (19) - 系统代理

    System Agent 在Sandy Bridge微架构中实现的系统代理包括了如下的组件: 一个总裁器,用于管理所有的访问请求,并将这些请求路由(即转发)到正确的位置上.访问请求可能来自于环域(ri ...

  9. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (18) - 数据预取

    Data Prefetching 使用软件预取指令,硬件预取机制,或者两者的任意组合,都可以将数据投机式地加载到L1D中. 程序员可以使用4条SSE预取指令来实施软件控制的预取操作.这些指令给处理器提 ...

最新文章

  1. 2022-2028年中国金融云行业市场研究及前瞻分析报告
  2. SAP MM Return Purchase Order之使用
  3. 在sql查询中使用表变量
  4. python装饰器_Python装饰器是个什么鬼?
  5. Java线程池Executor框架
  6. Python Django 常用字段类型
  7. Java Ajax jsonp 跨域请求
  8. 开发app用户协议_APP软件开发如何让用户更开心地付钱?
  9. matlab宏参赛,MATLAB杯无人机大赛 | 决赛通知!
  10. 一个学妹写的按键检测函数把我秀翻了!
  11. Log4j2完整XML参考(详细注释说明)
  12. 12.11团队任务汇总
  13. alisql mysql_AliSQL 5.6.32 vs MySQL 5.7.15抢鲜测试
  14. 电脑只能上微信不能打开网页_能上微信不能打开网页
  15. 吴伯凡-认知方法论-如何做到真正的反思
  16. 2015全国硕士研究生计算机考研真题(附答案)
  17. 关于windows下的System32与SysWOW64两个文件夹
  18. excel 设置隔行变色功能
  19. CentOS7.4下安装Oracle 11gR2
  20. 2014 C专科C组第五题 套娃

热门文章

  1. 如何读取tensorboard文件 展现可视化
  2. 代数学笔记3: 分裂域
  3. fpga 峰值采样_FPGA开发者都喜欢用的通用高性能电源解决方案
  4. CSDN的MarkDown编辑器插入图片时调整大小
  5. wepy小程序踩坑-未发现相关 sass/less 编译器配置,请检查wepy.config.js文件
  6. Python3小程序:把连续的16进制UTF8编码转换为字符串
  7. oracle怎么扩大连接数,如何增加ORACLE连接数
  8. linux 运行jar main,Maven打包生成jar包并在linux下启动main方法
  9. 实现石头剪刀布获胜法_用java实现一个猜拳小游戏
  10. svm matlab 画图,matlab 画图