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架构简介相关推荐

  1. 第10章 32 位 Intel 微处理器编程架构

    从这一章开始开始从从实模式进入32位保护模式:什么是实模式?之前所有的汇编程序都是在实模式下运行的,其特点是编程者可以读写任意一块内存,而不管这样做合不合适:保护模式则为了保护内存资源进行了限制,为每 ...

  2. Intel® Nehalem/Westmere架构/微架构/流水线 (5) - 高速缓存 存储器子系统

    Cache and Memory Subsystem Intel Nehalem微架构的每个处理器核包括一个一级指令高速缓存,一个一级数据高速缓存,以及一个二级混和式(指令与数据)高速缓存.单个物理处 ...

  3. Intel微处理器列表_百度百科

    Intel微处理器列表 这个 Intel 微处理器 列表 是用来展出所有的 Intel 的微处理器(µPs),从一开始的 4 位4004 (1971年) 到现今的 64 位 Itanium 2 (20 ...

  4. Xtensa处理器架构基础-架构简介与常见寄存器

    1.架构简介 应用的发展对处理器的需求越来越多样化.与通用处理器架构相比,Xtensa架构的特色在于它是可配置可扩展的微处理器架构.通俗地讲,将其与常见的ARM架构相比,Xtensa架构的特色在于可以 ...

  5. ARMv8-a架构简介

    1. 前言 ARMv8(当前只有A系列,即ARMv8-A)架构,是ARM公司为满足新需求而重新设计的一个架构,是近20年来,ARM架构变动最大的一次.它引入的Execution State.Excep ...

  6. Intel系列CPU架构的发展史

    Intel系列CPU架构的发展史 CPU(Central processing Unit),又称"微处理器(Microprocessor)",是现代计算机的核心部件.对于PC而言, ...

  7. a55计算机主板,A55架构简介与A55主板赏析

    A55架构简介与主板赏析: A55 FCH芯片架构 FCH芯片的角色大概相当于以往的南桥芯片,自身并没有整合显示核心,而是通过UMI接口(而不是HT总线)连接APU整合的显示核心进行输出.A55 FC ...

  8. [RISC-V] risk5 指令集架构简介——2021年初学习

    前言 没钱没设备还是别学了,我还以为买了书会有用,看了作者的公众号才知道,买开发板送书,你可以去查查FPGA板子要多少钱. 这个专栏的内容来自硅亚历山大的书<教你设计CPU--RISC-V处理器 ...

  9. Linux-5.10源代码之CPU架构简介

    Alpha: Alpha处理器最早由DEC公司设计制造,在Compaq(康柏)公司收购DEC之后,Alpha处理器继续得到发展,并且应用于许多高档的Compaq服务器上.HP (惠普)收购的Compa ...

最新文章

  1. 1005 Spell It Right
  2. ggplot2可视化分面图(faceting)使用label_wrap_gen函数设置每个分面图的子图标题自动换行为多行文本(基于设定的当行宽度进行标题文本自动换行)
  3. 去雾综述_【综述】图像去雾的前世今生
  4. 斯坦福CS231n项目实战(三):Softmax线性分类
  5. 保护Eclipse RCP应用的商业Java编译器
  6. php mail 在线,在线web e-mail发送
  7. 长期对着电脑是对身体很哟影响的
  8. 为什么大家拍摄视频不用摄像机,反而选用单反照相机呢?
  9. 若依框架使用总结说明
  10. Unity 讯飞实时语音转写(一)—— 使用WebSocket连接讯飞语音服务器
  11. 什么是ICMP协议,它的作用是什么?
  12. SPSS描述性统计分析
  13. python import失败_解决python有时候import不了当前的包问题
  14. matlab 固有频率 振型,基于MATLAB语言多自由度振动系统固有频率及主振型计算分析.pdf...
  15. LayUItable动态表格分栏操作
  16. java 如何给游戏加音效,修改添加游戏中各种音效的步骤
  17. xilinx_Recovery/Removal
  18. 托马斯塔尔步入好莱坞的创业路
  19. i7 9750h和r5 4600u 哪个好
  20. Objective-C - 点语法本质

热门文章

  1. 为什么我们不应该使用微信或者 QQ 作为团队协作的 IM 工具?
  2. modbus的使用说明——个人使用心得
  3. 并查集:CDOJ1593-老司机破阵 (假的并查集拆除)
  4. 用计算机算出用不用减肥,体脂率计算器有什么用
  5. python好学吗要有什么基础-Python0基础好学吗?
  6. python程序设计机械工业出版社课后答案-Python 3程序设计基础
  7. Shell中的expr命令
  8. spark整合hive
  9. P3669 [USACO17OPEN]Paired Up S 贪心+双指针
  10. unity 数字键的输入及刚体的速度的设置