Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
X86 cpu缓存和cpu之间的总线宽度_X86_Cpu_Cpu Architecture_Cpu Cache_Amd Processor - Fatal编程技术网

X86 cpu缓存和cpu之间的总线宽度

X86 cpu缓存和cpu之间的总线宽度,x86,cpu,cpu-architecture,cpu-cache,amd-processor,X86,Cpu,Cpu Architecture,Cpu Cache,Amd Processor,我无法计算出现代PC中cpu和cpu缓存之间的总线宽度。我在网上找不到任何可靠的东西。我所拥有的只是一个微体系结构,它说,L1和L2缓存可以在每个周期传输32B256b。我猜测,假设单数据速率,总线宽度为256行。但是,有两倍的数据传输速率,比如内存控制器和DDR内存之间 总结: cpu和cpu缓存256线之间的总线宽度是多少? 如果是,这是否意味着从一级缓存读取整个缓存线需要两个cpu周期? 这类信息可以在Intel和AMD的优化手册中找到,但通常是以端口带宽为单位的,而不是确切的宽度,因为这

我无法计算出现代PC中cpu和cpu缓存之间的总线宽度。我在网上找不到任何可靠的东西。我所拥有的只是一个微体系结构,它说,L1和L2缓存可以在每个周期传输32B256b。我猜测,假设单数据速率,总线宽度为256行。但是,有两倍的数据传输速率,比如内存控制器和DDR内存之间

总结:

cpu和cpu缓存256线之间的总线宽度是多少? 如果是,这是否意味着从一级缓存读取整个缓存线需要两个cpu周期?
这类信息可以在Intel和AMD的优化手册中找到,但通常是以端口带宽为单位的,而不是确切的宽度,因为这是大多数人关心的

Zen微体系结构中的L1D缓存有16个存储组和3个128位端口,其中两个可以处理加载类型请求,一个可以处理存储类型请求。因此,最大core-L1D带宽为128*3位/周期。在Zen 2中,每个端口扩展到256位/c,并且组的数量减少了一半。因此,Zen 2中的最大core-L1D带宽为256*3位/周期,但实现最大带宽的可能性较低


以Intel处理器的Ice Lake为例。L1D缓存有4个端口、两个512位加载和两个256位存储。存储端口可以每两个周期处理一个512位存储请求,也可以每两个周期处理两个256位存储请求,但前提是这两个存储完全包含在同一缓存线中并且具有相同的内存类型。在我看来,这两个存储端口实际上实现为一个256位宽的存储端口,具有双存储合并功能。因此,核心端真正的端口总数似乎是3个。

这类信息可以在Intel和AMD的优化手册中找到,但通常是以端口带宽为单位,而不是确切的宽度,因为这是大多数人关心的

Zen微体系结构中的L1D缓存有16个存储组和3个128位端口,其中两个可以处理加载类型请求,一个可以处理存储类型请求。因此,最大core-L1D带宽为128*3位/周期。在Zen 2中,每个端口扩展到256位/c,并且组的数量减少了一半。因此,Zen 2中的最大core-L1D带宽为256*3位/周期,但实现最大带宽的可能性较低


以Intel处理器的Ice Lake为例。L1D缓存有4个端口、两个512位加载和两个256位存储。存储端口可以每两个周期处理一个512位存储请求,也可以每两个周期处理两个256位存储请求,但前提是这两个存储完全包含在同一缓存线中并且具有相同的内存类型。在我看来,这两个存储端口实际上实现为一个256位宽的存储端口,具有双存储合并功能。因此,核心端的真实端口总数似乎是3。

L2和L1d之间的路径位于两级CPU缓存之间,而不是加载/存储执行单元。在Zen中是128位宽,因此它必须将256位AVX加载/存储拆分为2个UOP,有点像Intel Sandybridge。但请注意,它可以在每个时钟上加载2倍的128位负载。图中清楚地显示了32B/周期。这将是突发吞吐量,而不是延迟,也不一定是持续吞吐量。这里没有指定是128位双泵还是256位正常,尽管对于单个CPU内核内的这个内部连接,256位正常是可能的。因此,如果我理解正确,不管是128行还是256行,我可以假设有效总线宽度是256位?我的意思是整数/FP ALU和FPU?之间的总线宽度,没有描述哪些总线。请注意,L1d->FP/SIMD加载单元的浅蓝色/绿松石色2x 128位路径,标记为LDCVT。这是Zen1,而不是Zen2,因此负载执行单元只有128位宽。我对商店路径上的32B/周期标签感到惊讶;我知道这是怎么回事。vmovaps[rdi],ymm0是Zen1上的2个uops。如果您正在寻找关于其他x86微体系结构的信息,请参阅Haswell的非常好的内容,对于Sandybridge也是非常优秀的。不幸的是,大卫·坎特(David Kanter)并没有为Zen或Skylake公开发表过类似的深潜作品,只针对推土机和更老的机型。他的禅宗深度潜水是在付费墙后面:。我认为这在某种程度上是公开的,可能在archive.org中,L2和L1d之间的路径位于两级CPU缓存之间,而不是加载/存储执行单元。在Zen中是128位宽,因此它必须将256位AVX加载/存储拆分为2个UOP,有点像Intel Sandybridge。但请注意,它可以在每个时钟上加载2倍的128位负载。图中清楚地显示了32B/周期。这将是突发吞吐量,而不是延迟,也不一定是持续吞吐量。这里没有指定是128位双泵还是256位正常,尽管对于单CPU c内部的这种内部连接,256位正常可能是正常的
如果我理解正确,不管是128行还是256行,我可以假设有效总线宽度是256位?我的意思是整数/FP ALU和FPU?之间的总线宽度,没有描述哪些总线。请注意,L1d->FP/SIMD加载单元的浅蓝色/绿松石色2x 128位路径,标记为LDCVT。这是Zen1,而不是Zen2,因此负载执行单元只有128位宽。我对商店路径上的32B/周期标签感到惊讶;我知道这是怎么回事。vmovaps[rdi],ymm0是Zen1上的2个uops。如果您正在寻找关于其他x86微体系结构的信息,请参阅Haswell的非常好的内容,对于Sandybridge也是非常优秀的。不幸的是,大卫·坎特(David Kanter)并没有为Zen或Skylake公开发表过类似的深潜作品,只针对推土机和更老的机型。他的禅宗深度潜水是在付费墙后面:。我认为这在某种程度上是公开的,也许在archive.org中,在Zen L1D缓存的上下文中,这是否意味着从缓存到核心的负载的最大带宽是256位/c?@user12292000 128乘以3是384位/c。是的,但你说过,有两个128位端口,可以处理负载类型的请求。@user12292000哦,是的,我注意到你说的只是负载。对。对于Haswell/Broadwell,我能发明的解释我的测量的唯一模型假设L1D缓存有两个完整的缓存线64字节读取端口。这些端口中的每一个都可以访问完整的缓存线,并且可以通过从该缓存线到两个核心缓存读取端口之一的任何对齐方式,提供多达32个连续字节。可能有更复杂的假设实现可以匹配数据,但这与我对仅就绪行为的所有观察结果相匹配-写入更令人困惑。在Zen L1D缓存的上下文中,这是否意味着从缓存到核心的负载的最大带宽是256位/c?@user12292000 128乘以3是384位/c。是的,但是你说过,有两个128位的端口,可以处理加载类型的请求。@user12292000哦,是的,我注意到你说的只是加载。对。对于Haswell/Broadwell,我能发明的解释我的测量的唯一模型假设L1D缓存有两个完整的缓存线64字节读取端口。这些端口中的每一个都可以访问完整的缓存线,并且可以通过从该缓存线到两个核心缓存读取端口之一的任何对齐方式,提供多达32个连续字节。可能有更复杂的假设实现可以匹配数据,但这与我对仅准备好的行为的所有观察结果相匹配——写入更令人困惑。