思科QuantumFlow处理器及其战略研究(4):体系结构(处理器观点)

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




观察思科的QFP芯片,可以从不同的观点(Viewpoints)。QFP是一个高端的网络处理器,里面有40个CPU核心,大量的片内和片外内存,高速的互连网络,大量的网络报文引擎,硬件加速器等。从不同的角度来观察QFP,得到的图像是略有不同的。

上述图示是笔者从CPU的角度来观察QFP的逻辑。我们可以暂且称之为QFP-CPU。

从QFP-CPU角度,其是一个多核系统。一共有40个核。每个核有4个硬件线程。其4个线程的调度关系应该是FMT的架构,从而最大程度的利用Mesh互联的带宽。从思科的公共资料可以得知,对于ESP-20BPS的QFP,其CPU核的指令集是Tensilica的Xtensa的ISA(MIPS的变种)。其时钟在1.2GHz。对于Mesh互联的Clock Domain的细节,目前不可知。

每个核都是32位指令集。换言之,GPR是32bit的。

每个CPU核的硬件线程有自己的L1数据缓存;

一个CPU核的4个硬件线程共享L1指令缓存;

QFP的40个核共享一个L2缓存。(这个L2是单纯的指令缓存,或是Combined指令和数据缓存,目前没有明确的资料可以确认。但笔者倾向于QFP的L2是一个单纯的指令缓存。QFP的HT在L1数据缓存Miss后,是直接通过Crossbar的接口读取片外的RLDRAM。笔者分析的原因是:从QFP-Packet的观点,数据报文都在片内的内存中。所以QFP的CPU核对数据读写应该绝大多数落在片内报文内存上。而指令流的性能对于采用SIMD并行计算模式的QFP多核系统是最重要的。

读者们要注意,在现代多核系统设计中,总线的概念和机制基本上已经消失。所以从QFP-CPU的角落来观察QFP是,L2缓存,DDR内存控制器等,其实都是挂在Mesh上的一个节点。与其他40个核节点构成一个2维Mesh全联通的图。

另外,从QFP-CPU的角度,其他所有的数据报文(Packet)硬件逻辑可以简单的理解为“I/O子系统 ”。

(3个打分, 平均:5.00 / 5)

雁过留声

“思科QuantumFlow处理器及其战略研究(4):体系结构(处理器观点)”有21个回复

  1. processor 于 2009-01-18 10:42 下午

    不知道这个多核处理器各个处理器核之间的D$是如何
    维护cache coherence的,支持何种memory consistency
    model?

  2. 陈怀临 于 2009-01-19 6:37 上午

    这个问题当然重要。会在后续的文章中谈及。

  3. Peter 于 2009-01-20 2:49 上午

    你可以看看www.tilera.com上面的产品,64core cpu使用2d mesh总线,使用一个叫做DDC的技术来做cache coherence的。

  4. processor 于 2009-01-20 4:45 上午

    DDC是商业名称,不知道其具体的机制是什么。我记得Tile64的实际上不支持cache coherence,它采用的是类似Cray T3E的方案,就是D$不缓存L2的home节点是远地节点的cache block,由此避免了cache coherence问题。DDC不像是一种cache coherence方案,而可能是一种如何划分64个处理器核,而形成多个coherence domain,各个coherence domain间隔离,从而可以运行多个SMP OS的方案。这很类似ISCA’07中Virtual Hierachy那篇paper的做法。搜了一下Tilera的patent,也没有进一步的发现。

  5. 黄岩 于 2009-01-20 5:36 上午

    Processor的说法对的,但是Tilera在TilePro里面做了改进,解决了cache一致性问题。

    不知道此peter是否为彼peter?如果你们同意,我愿意写一些介绍Tile64的文章,帮你们宣传鼓劲。

  6. 陈怀临 于 2009-01-20 6:33 上午

    谢谢3,4,5.我今天就来阅读一下DDC的资料。我对这方面有强烈的兴趣。曾经把Bus时序图,MESI状态机打印并关注办公室做装饰品欣赏,天天看。

  7. processor 于 2009-01-20 9:14 上午

    5楼,话题已经打开,你讲一下TilePro64吧。别局限于MICRO上的、原来RAW的paper,写写你的理解吧。

  8. 黄岩 于 2009-01-21 3:49 上午

    我们公司跟他们签了NDA的,未经tilera允许是不能说的:(

    害怕惹麻烦。

  9. 陈怀临 于 2009-01-21 6:10 下午

    DDC是Dynamic Distributed Cache的缩写。简而言之,是TilePro64的一个亮点,可以支持全局(64个core)的cache coherence了。也就是说
    ×一个tile(core)有自己的L1和L2cache
    ×其他63个core的cache(L1+L2)可以作为L3 cache被利用。(很牛)

    这个实现是通过增加了一个mesh来实现的。tilepro64有6个mesh;tile64是5个。新增加的这个mesh就是为了这个DDS snoop技术的。

    注:L1+L2的意思是:depends on the cache结构。例如inclusive cache或exclusive cache。指的是L1与L2的关系。

  10. processor 于 2009-01-21 7:33 下午

    9楼说的“其他63个core的cache(L1+L2)可以作为L3 cache被利用。(很牛)”,当其它核的L2被当作L3时,其它核上运行的程序是否会受到干扰,其L2被第一个核的数据污染了。另外,其它核的L1没必要当作L3吧,因为L1在访存流水线上;L2可以作为其它核的L3就够了吧。BTW,没觉得这是很牛的设计,03~05年左右的microarchitecture上很多类似的paper。

    “新增加的这个mesh就是为了这个DDS snoop技术的。”,这里在mesh上作snoop感觉不是很优美的工程。

    Tile64/TilePro64没有使用目录协议来支持cache coherence,省了不少工程。

  11. KISS 于 2009-01-22 1:16 上午

    to processor:
    “…就是D$不缓存L2的home节点是远地节点的cache block,由此避免了cache coherence问题。”

    有点不明白这句话,我没看过T3E的paper,所以能不能详细解释一下。对Tilera的memory system很感兴趣。

  12. KISS 于 2009-01-22 1:53 上午

    刚大概看了一下,是不是这个意思:
    1,Tile64只cache本地tile(通过系统软件管理-MMU指定?)地址空间的内容-类似T3E本地节点只cache本地memory,但提供一个全局物理地址空间
    2,而Tilepro提供snoop-based的CC支持

    BTW:我倒是觉得这个设计(snoop over mesh)是一个自然的选择。Tilera的互连网络特点跟需求跟传统NUMA相比有很大差异:big bandwidth; ultra-short latency (1 cycle/hop?); 尤其是系统上来看,PE之间紧密耦合,而且采用的是集中式主存。
    而Tilepro之所以额外增加一个(physical or logical?) mesh的原因很可能是snoop协议需要的带宽问题。

    p.s: 哪里有DCC的资料?没在tilera网站看到

  13. KISS 于 2009-01-22 3:57 上午

    打错了,是DDC

    我也觉得DDC不是指CC实现机制,更可能是coherence domain的指定,L2作为L3的管理等等

    这样看来,额外的mesh可能更多是支持DDC等带来的cache-to-cache transfer,只是维护snoop协议可能不需要这么大带宽-纯属个人猜测。

  14. 陈怀临 于 2009-01-22 6:43 上午

    TilePro64的DDC在原理上应该没有什么太革命性的东西。估计就是ccNUMA和DSM的哪些算法的变种。

    但Tilera的厉害在于做出来并流片成功。

  15. 芒果 于 2009-01-27 9:14 下午

    我以前在的公司,1024个MPU的芯片也做了.但生存不易.

  16. 芒果 于 2009-01-30 7:43 下午

    “各个coherence domain间隔离,从而可以运行多个SMP OS的方案”我猜也只能这样.
    这儿的大腕多呀,学习了.

  17. KISS 于 2009-01-31 3:50 上午

    To 芒果:

    你原公司是Rapport?

  18. 芒果 于 2009-02-02 9:48 上午

    不是.connex.我要有女儿的时候CEO老唠叨说我们还有X月的钱,又多1个月的钱,..我为了养家只好跑路.
    刚接到以前同事的消息,金融危机成了压倒它的最后一根稻草.可惜了俺的10多万股呀.
    跟他们说过网络可以用,人微言轻,俺也真不懂网络.他们用于数字视频,那MPEG根本就不适合并行处理(只在slice level),除非自立标准.
    4个4KEc, 1024个16bit array processor, DDR2(控制器是那谁的,关键之一哟),还有杂项如用于数学压缩(CABAC)的stack processor. 可惜.

  19. 陈怀临 于 2009-02-02 11:02 上午

    http://news.thomasnet.com/fullstory/485570

    ————–
    Connex Technology Unveils Architecture for Programmable, Massively Parallel Processors, Optimized for HDTV

    June 26, 2006 – ConnexArray vector architecture combines thousands of RISC-like processing elements with local memory on a single chip. Massively parallel architecture functions with 16-bit integer and Boolean operations to execute data-intensive algorithms necessary to encode, decode, and transcode multiple HDTV channels. Developers can use SDK to write programs in Connex Programming Language (CPL), an extension of C that adds vector datatype for parallel operations on video datastreams.

  20. asic 于 2009-02-03 7:00 上午

    DDR2 controller自己开发的,还是很强啊

  21. 陈怀临 于 2009-02-03 9:15 下午

    我没有读到DDR2 Controller是自己做的。其实,从技术而言,也不太可能。芒果其实也暗示是从xxx合作的软核或硬核(更像)。我感觉SoC里其实memory是很难的一个东西–做稳定和clock上去。