Intel微处理器Uncore架构简介
uncore一词,是英特尔用来描述微处理器中,功能上为非处理器核心(Core)所负担,但是对处理器性能的发挥和维持有必不可少的作用的组成部分。处理器核心(Core)包含的处理器组件都涉及处理器命令的运行,包括算术逻辑单元(ALU)、浮点运算单元(FPU)、一级缓存(L1 Cache)、二级缓存(L2 Cache)。Uncore的功能包括QPI控制器、三级缓存(L3 Cache)、内存一致性监测(snoop agent pipeline)、内存控制器,以及Thunderbolt控制器。至于其余的总线控制器,像是PCI-E、SPI等,则是属于芯片组的一部分。
英特尔Uncore设计根源,来自于北桥芯片。Uncroe的设计是,将对于处理器核心有关键作用的功能重新组合编排,从物理上使它们更靠近核心(集成至处理器芯片上,而它们有部分原来是位于北桥上),以降低它们的访问延时。而北桥上余下的和处理器核心并无太大关键作用的功能,像是PCI-E控制器或者是电源控制单元(PCU),并没有集成至Uncore部分,而是继续作为芯片组的一部分。
具体而言,微架构中的uncore是被细分为数个模块单元的。uncore连接至处理器核心是通过一个叫Cache Box(CBox)的接口实现的,CBox也是末级缓存(Last Level Cache,LLC)的连接接口,同时负责管理缓存一致性。复合的内部与外部QPI链接由物理层单元(Physical Layer units)管理,称为PBox。PBox、CBox以及一个或更多的内置存储器控制器(iMC,作MBox)的连接由系统配置控制器(System Config Controller,作UBox)和路由器(Router,作RBox)负责管理。
从uncore部分移出列表总线控制器,可以更好地促进性能的提升,通过允许uncore的时钟频率(UCLK)运作于基准的2.66GHz,提升至超过超频限制值的3.44GHz,实现性能提升。这种时脉提升使得核心访问关键功能部件(像是存储器控制器)时的延时值更低(典型情况下处理器核心访问DRAM的时间可降低10纳秒或更多)。
Linux会把识别出的Uncore设备列在sysfs中:
# ls -d /sys/devices/uncore_*
/sys/devices/uncore_cha_0 /sys/devices/uncore_imc_1
/sys/devices/uncore_cha_1 /sys/devices/uncore_imc_2
/sys/devices/uncore_cha_10 /sys/devices/uncore_imc_3
/sys/devices/uncore_cha_11 /sys/devices/uncore_imc_4
/sys/devices/uncore_cha_2 /sys/devices/uncore_imc_5
/sys/devices/uncore_cha_3 /sys/devices/uncore_irp_0
/sys/devices/uncore_cha_4 /sys/devices/uncore_irp_1
/sys/devices/uncore_cha_5 /sys/devices/uncore_irp_2
/sys/devices/uncore_cha_6 /sys/devices/uncore_irp_3
/sys/devices/uncore_cha_7 /sys/devices/uncore_irp_4
/sys/devices/uncore_cha_8 /sys/devices/uncore_irp_5
/sys/devices/uncore_cha_9 /sys/devices/uncore_m2m_0
/sys/devices/uncore_iio_0 /sys/devices/uncore_m2m_1
/sys/devices/uncore_iio_1 /sys/devices/uncore_m3upi_0
/sys/devices/uncore_iio_2 /sys/devices/uncore_m3upi_1
/sys/devices/uncore_iio_3 /sys/devices/uncore_pcu
/sys/devices/uncore_iio_4 /sys/devices/uncore_ubox
/sys/devices/uncore_iio_5 /sys/devices/uncore_upi_0
/sys/devices/uncore_imc_0 /sys/devices/uncore_upi_1
PMU Tools
开源项目pmu-tools集成了ucevent(uncore event)的工具,可以查看并跟踪uncore事件。使用ucevnent.py列出支持的uncore events:
cd pmu-tools/ucevent
./ucevent.pyCHA (Home Agent) CACHE EventsCHA.LLC_DRD_MISS_PCT LLC DRd Miss PercentageCHA (Home Agent) HA (Home Agent) REQUEST EventsCHA.PCT_RD_REQUESTS Percent Read RequestsCHA.PCT_WR_REQUESTS Percent Write RequestsCHA (Home Agent) INGRESS EventsCHA.AVG_INGRESS_DEPTH Average Ingress (from CMS) DepthCHA.AVG_INGRESS_LATENCY Average Ingress (from CMS) LatencyCHA.AVG_INGRESS_LATENCY_WHEN_NE Average Latency in Non-Empty Ingress (from CMS)CHA.CYC_INGRESS_BLOCKED Cycles Ingress (from CMS) BlockedCHA.INGRESS_REJ_V_INS Ingress (from CMS) Rejects vs. InsertsCHA (Home Agent) TOR (Table of Requests, pending transactions) EventsCHA.AVG_CRD_MISS_LATENCY Average Code Read LatencyCHA.AVG_DEMAND_RD_HIT_LATENCY Average Data Read Hit LatencyCHA.AVG_DEMAND_RD_MISS_LOCAL_LATENCY Average Data Read Local Miss LatencyCHA.AVG_DRD_MISS_LATENCY Average Data Read Miss LatencyCHA.AVG_IA_CRD_LLC_HIT_LATENCY Average Code Read LatencyCHA.AVG_RFO_MISS_LATENCY Average RFO LatencyCHA.AVG_TOR_DRDS_MISS_WHEN_NE Average Data Read Misses in Non-Empty TORCHA.AVG_TOR_DRDS_WHEN_NE Average Data Reads in Non-Empty TORCHA.FAST_STR_LLC_HIT Fast String operationsCHA.FAST_STR_LLC_MISS Fast String missesCHA.LLC_CRD_MISS_TO_LOC_MEM LLC Code Read Misses to Local MemoryCHA.LLC_CRD_MISS_TO_REM_MEM LLC Code Read Misses to Remote MemoryCHA.LLC_DRD_MISS_TO_LOC_MEM LLC Data Read Misses to Local MemoryCHA.LLC_DRD_MISS_TO_REM_MEM LLC Data Read Misses to Remote MemoryCHA.LLC_DRD_PREFETCH_HITS DRd Prefetches that Hit the LLC...
比如跟踪10秒内不同Socket上的PCI带宽:
# ucevent.py -I 2000 CBO.PCIE_DATA_BYTES sleep 10
S0-CBO.PCIE_DATA_BYTES
| S1-CBO.PCIE_DATA_BYTES
384.00 256.00
0.00 256.00
0.00 0.00
0.00 0.00
再比如跟踪某个应用在内存控制器(iMC)上统计获得的缺页次数,一般情况下,这个指标可以用来衡量内存延时:# ucevent.py iMC.PCT_REQUESTS_PAGE_MISS my-workload
PCM (Processor Counter Monitor)
PCM提供了一些监控LLC, PCI,QPI的工具。其中,pcm.x可以监控core, cache miss/hit和各个socket的upi带宽:
./pcm.x
...Detected Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz "Intel(r) microarchitecture codename Skylake-SP" stepping 4 microcode level 0x2000043EXEC : instructions per nominal CPU cycleIPC : instructions per CPU cycleFREQ : relation to nominal CPU frequency='unhalted clock ticks'/'invariant timer ticks' (includes Intel Turbo Boost)AFREQ : relation to nominal CPU frequency while in active state (not in power-saving C state)='unhalted clock ticks'/'invariant timer ticks while in C0-state' (includes Intel Turbo Boost)L3MISS: L3 (read) cache missesL2MISS: L2 (read) cache misses (including other core's L2 cache *hits*)L3HIT : L3 (read) cache hit ratio (0.00-1.00)L2HIT : L2 cache hit ratio (0.00-1.00)L3MPI : number of L3 (read) cache misses per instructionL2MPI : number of L2 (read) cache misses per instructionREAD : bytes read from main memory controller (in GBytes)WRITE : bytes written to main memory controller (in GBytes)L3OCC : L3 occupancy (in KBytes)TEMP : Temperature reading in 1 degree Celsius relative to the TjMax temperature (thermal headroom): 0 corresponds to the max temperatureenergy: Energy in JoulesCore (SKT) | EXEC | IPC | FREQ | AFREQ | L3MISS | L2MISS | L3HIT | L2HIT | L3MPI | L2MPI | L3OCC | TEMP0 0 0.01 0.37 0.04 1.17 36 K 103 K 0.54 0.63 0.00 0.00 576 471 1 0.00 0.88 0.00 1.17 4602 13 K 0.64 0.68 0.00 0.00 432 562 0 0.01 0.82 0.01 1.17 20 K 61 K 0.57 0.70 0.00 0.00 384 483 1 0.01 0.87 0.01 1.17 16 K 41 K 0.56 0.72 0.00 0.00 2016 574 0 0.01 0.78 0.01 1.17 18 K 66 K 0.67 0.66 0.00 0.00 672 495 1 0.00 0.51 0.01 1.17 14 K 31 K 0.51 0.62 0.00 0.00 1152 586 0 0.01 0.65 0.01 1.17 21 K 72 K 0.65 0.61 0.00 0.00 1968 507 1 0.00 0.82 0.00 1.17 6567 13 K 0.45 0.60 0.00 0.00 480 58
...Intel(r) UPI data traffic estimation in bytes (data traffic coming to CPU/socket through UPI links):UPI0 UPI1 | UPI0 UPI1
---------------------------------------------------------------------------------------------------------------SKT 0 43 M 43 M | 0% 0%SKT 1 32 M 31 M | 0% 0%
---------------------------------------------------------------------------------------------------------------
...
pcm.memory.x可以用来监控各个内存通道的读写带宽:
# ./pcm-memory.xProcessor Counter Monitor: Memory Bandwidth Monitoring Utility ($Format:%ci ID=%h$)This utility measures memory bandwidth per channel or per DIMM rank in real-timeNumber of physical cores: 24
Number of logical cores: 48
Number of online logical cores: 48
Threads (logical cores) per physical core: 2
Num sockets: 2
Physical cores per socket: 12
Core PMU (perfmon) version: 4
Number of core PMU generic (programmable) counters: 4
Width of generic (programmable) counters: 48 bits
Number of core PMU fixed counters: 3
Width of fixed counters: 48 bits
Nominal core frequency: 2300000000 Hz
Package thermal spec power: 105 Watt; Package minimum power: 64 Watt; Package maximum power: 231 Watt;
Socket 0: 2 memory controllers detected with total number of 6 channels. 2 QPI ports detected.
Socket 1: 2 memory controllers detected with total number of 6 channels. 2 QPI ports detected.Detected Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz "Intel(r) microarchitecture codename Skylake-SP" stepping 4 microcode level 0x2000043
Update every 1 seconds
|---------------------------------------||---------------------------------------|
|-- Socket 0 --||-- Socket 1 --|
|---------------------------------------||---------------------------------------|
|-- Memory Channel Monitoring --||-- Memory Channel Monitoring --|
|---------------------------------------||---------------------------------------|
|-- Mem Ch 0: Reads (MB/s): 18.91 --||-- Mem Ch 0: Reads (MB/s): 16.60 --|
|-- Writes(MB/s): 23.22 --||-- Writes(MB/s): 18.96 --|
|-- Mem Ch 1: Reads (MB/s): 18.98 --||-- Mem Ch 1: Reads (MB/s): 16.80 --|
|-- Writes(MB/s): 23.39 --||-- Writes(MB/s): 19.15 --|
|-- Mem Ch 2: Reads (MB/s): 18.77 --||-- Mem Ch 2: Reads (MB/s): 16.35 --|
|-- Writes(MB/s): 23.05 --||-- Writes(MB/s): 18.71 --|
|-- Mem Ch 3: Reads (MB/s): 17.89 --||-- Mem Ch 3: Reads (MB/s): 15.75 --|
|-- Writes(MB/s): 22.94 --||-- Writes(MB/s): 18.44 --|
|-- Mem Ch 4: Reads (MB/s): 17.87 --||-- Mem Ch 4: Reads (MB/s): 15.88 --|
|-- Writes(MB/s): 22.78 --||-- Writes(MB/s): 18.55 --|
|-- Mem Ch 5: Reads (MB/s): 18.04 --||-- Mem Ch 5: Reads (MB/s): 16.80 --|
|-- Writes(MB/s): 22.93 --||-- Writes(MB/s): 19.64 --|
|-- NODE 0 Mem Read (MB/s) : 110.47 --||-- NODE 1 Mem Read (MB/s) : 98.18 --|
|-- NODE 0 Mem Write(MB/s) : 138.31 --||-- NODE 1 Mem Write(MB/s) : 113.46 --|
|-- NODE 0 P. Write (T/s): 18728 --||-- NODE 1 P. Write (T/s): 18732 --|
|-- NODE 0 Memory (MB/s): 248.78 --||-- NODE 1 Memory (MB/s): 211.63 --|
|---------------------------------------||---------------------------------------|
|---------------------------------------||---------------------------------------|
|-- System Read Throughput(MB/s): 208.65 --|
|-- System Write Throughput(MB/s): 251.77 --|
|-- System Memory Throughput(MB/s): 460.42 --|
|---------------------------------------||---------------------------------------|
numa带宽监控
./pcm-numa.x
…
Detected Intel® Xeon® Gold 5118 CPU @ 2.30GHz “Intel® microarchitecture codename Skylake-SP” stepping 4 microcode level 0x2000043
Update every 1.0 seconds
Time elapsed: 1000 ms
Core | IPC | Instructions | Cycles | Local DRAM accesses | Remote DRAM Accesses
0 0.37 30 M 81 M 41 K 90 K
1 0.71 10 M 14 M 90 K 20 K
2 0.64 14 M 22 M 20 K 59 K
3 1.10 79 M 71 M 7264 21 K
4 0.82 26 M 31 M 33 K 48 K
5 0.95 12 M 13 M 8131 27 K
6 0.37 13 M 35 M 306 K 111 K
7 1.00 7417 K 7432 K 9991 9136
8 0.76 12 M 15 M 13 K 6833
9 1.03 14 M 13 M 10 K 19 K
10 0.56 6269 K 11 M 42 K 50 K
11 0.92 26 M 29 M 60 K 85 K
12 0.87 14 M 16 M 17 K 10 K
13 0.64 4130 K 6504 K 5615 40 K
14 0.88 32 M 36 M 57 K 51 K
15 0.88 10 M 11 M 8689 16 K
…
Intel微处理器Uncore架构简介相关推荐
- 第10章 32 位 Intel 微处理器编程架构
从这一章开始开始从从实模式进入32位保护模式:什么是实模式?之前所有的汇编程序都是在实模式下运行的,其特点是编程者可以读写任意一块内存,而不管这样做合不合适:保护模式则为了保护内存资源进行了限制,为每 ...
- Intel® Nehalem/Westmere架构/微架构/流水线 (5) - 高速缓存 存储器子系统
Cache and Memory Subsystem Intel Nehalem微架构的每个处理器核包括一个一级指令高速缓存,一个一级数据高速缓存,以及一个二级混和式(指令与数据)高速缓存.单个物理处 ...
- Intel微处理器列表_百度百科
Intel微处理器列表 这个 Intel 微处理器 列表 是用来展出所有的 Intel 的微处理器(µPs),从一开始的 4 位4004 (1971年) 到现今的 64 位 Itanium 2 (20 ...
- Xtensa处理器架构基础-架构简介与常见寄存器
1.架构简介 应用的发展对处理器的需求越来越多样化.与通用处理器架构相比,Xtensa架构的特色在于它是可配置可扩展的微处理器架构.通俗地讲,将其与常见的ARM架构相比,Xtensa架构的特色在于可以 ...
- ARMv8-a架构简介
1. 前言 ARMv8(当前只有A系列,即ARMv8-A)架构,是ARM公司为满足新需求而重新设计的一个架构,是近20年来,ARM架构变动最大的一次.它引入的Execution State.Excep ...
- Intel系列CPU架构的发展史
Intel系列CPU架构的发展史 CPU(Central processing Unit),又称"微处理器(Microprocessor)",是现代计算机的核心部件.对于PC而言, ...
- a55计算机主板,A55架构简介与A55主板赏析
A55架构简介与主板赏析: A55 FCH芯片架构 FCH芯片的角色大概相当于以往的南桥芯片,自身并没有整合显示核心,而是通过UMI接口(而不是HT总线)连接APU整合的显示核心进行输出.A55 FC ...
- [RISC-V] risk5 指令集架构简介——2021年初学习
前言 没钱没设备还是别学了,我还以为买了书会有用,看了作者的公众号才知道,买开发板送书,你可以去查查FPGA板子要多少钱. 这个专栏的内容来自硅亚历山大的书<教你设计CPU--RISC-V处理器 ...
- Linux-5.10源代码之CPU架构简介
Alpha: Alpha处理器最早由DEC公司设计制造,在Compaq(康柏)公司收购DEC之后,Alpha处理器继续得到发展,并且应用于许多高档的Compaq服务器上.HP (惠普)收购的Compa ...
最新文章
- 1005 Spell It Right
- ggplot2可视化分面图(faceting)使用label_wrap_gen函数设置每个分面图的子图标题自动换行为多行文本(基于设定的当行宽度进行标题文本自动换行)
- 去雾综述_【综述】图像去雾的前世今生
- 斯坦福CS231n项目实战(三):Softmax线性分类
- 保护Eclipse RCP应用的商业Java编译器
- php mail 在线,在线web e-mail发送
- 长期对着电脑是对身体很哟影响的
- 为什么大家拍摄视频不用摄像机,反而选用单反照相机呢?
- 若依框架使用总结说明
- Unity 讯飞实时语音转写(一)—— 使用WebSocket连接讯飞语音服务器
- 什么是ICMP协议,它的作用是什么?
- SPSS描述性统计分析
- python import失败_解决python有时候import不了当前的包问题
- matlab 固有频率 振型,基于MATLAB语言多自由度振动系统固有频率及主振型计算分析.pdf...
- LayUItable动态表格分栏操作
- java 如何给游戏加音效,修改添加游戏中各种音效的步骤
- xilinx_Recovery/Removal
- 托马斯塔尔步入好莱坞的创业路
- i7 9750h和r5 4600u 哪个好
- Objective-C - 点语法本质