0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

片上多核系统与片上网络的发展

SwM2_ChinaAET 来源:lq 2019-10-01 16:43 次阅读

1. 片上多核系统与片上网络的发展中的

1.1 片上多核系统发展的两条演进路线

系统级芯片也被称为片上系统,是指在单个芯片内部实现大部分甚至完整的电子系统功能的一种芯片。这种芯片是高端电子系统的核心,随着集成电路工艺技术的发展也逐步向中低端电子系统发展。如今,很多诸如腕表、手环之类的可穿戴设备以及智能玩具等低端嵌入式设备也都以系统级芯片为核心来开展设计。可以说片上系统已经成为集成电路,尤其是数字集成电路的主要实现形式。

由于集成电路工艺在摩尔定律的驱使下飞速发展,单位面积上的晶体管数量不断增加。根据登纳德缩放比例(晶体管面积的缩小使得其所消耗的电压以及电流会以差不多相同的比例缩小。也就是说,如果晶体管的大小减半而时钟频率不变,该晶体管的功耗将会降至四分之一)。,使用新的集成电路工艺可以让设计者可以大大地提高芯片的时钟频率,因为提高频率所带来的更多的功耗会与晶体管缩放减少的功耗抵消,芯片的性能可以依靠不断的提升时钟频率来获得提高(当然,也要配合架构设计的改进,例如利用增加的晶体管设计更多而且更为合理的高速缓存)。这样在芯片内部集成更多的晶体管的时候,提高芯片时钟频率成为了一个“免费的午餐”。

而2005年前后,晶体管微缩到一定程度以后量子隧穿效应(指像电子等微观粒子能够穿入或穿越位势垒的量子行为)开始慢慢介入,使得晶体管漏电现象开始严重。漏电现象的出现打破了原先登纳德所提出的定律。单纯提高时钟频率将造成芯片功耗难以控制。功耗增大除了更费电不环保之外,带来的最大问题是增加的功耗会转化为热量。在微小的芯片面积上大量功耗密集堆积会导致温度急剧增加。如果散热做的不好,芯片的寿命将大大减少甚至变得不稳定。在这种情况下,提高芯片的时钟频率不再是免费的午餐。在没有解决晶体管漏电的问题之前,单纯的增加芯片的时钟频率因为随之而来的散热问题而变得不再现实。于是芯片研究商们开始纷纷停止高频芯片的研发,转而向低频多核的架构开始研究,用更多但频率更低的核心来替代一个高频率的核心。这种具备多个运算核心的片上系统就是片上多核系统。

近10年来片上多核系统一直是数字集成电路领域的热点,经过众多研究者的不断努力诞生了大量很有意义的研究成果。片上网络,本质上是为了解决片上多核系统中不同的核心之间,核心与非核心(Un-Core)硬件单元之间数据传输问题的一种“片上通信”方案。因此要理解清楚片上系统的发展脉络,必须要先从片上多核系统的发展入手。否则就会出现“无的放矢”和“盲人摸象”的问题。但由于片上多核系统的研究者背景和应用领域不同导致发展演进过程较为复杂而难以理解。2012年本人及所在研究小组开始切入片上网络相关时,由于对于片上多核系统的理解不深,导致研究出现了诸多波折与困扰,导致在一年多的时间中整体研究徘徊不前。

为减少这一问题对于大家理解片上网络的影响,作为我们系列文章的开头,本文将首先总结片上多核系统的演进历史与现状。从而让大家理解出现片上网络这一技术背后的推动力,也可以看出片上网络多年来一直徘徊不前的原因。

下面就开始进入我们的正题:

第一款被大众所熟知的商用化片上多核系统是著名处理器芯片提供商之一的AMD公司面向个人电脑推出的ATHLON X2双核中央处理器Central Processing Unit (CPU),该款CPU在商业上大获成功。此后商用化片上多核系统的研制开始进入高潮。2005 年Intel发布了64位双核处理器Montecito[1],而IBM公司则发布了具有9个核心的Cell处理器[2]。此后的10年间,片上多核系统开始大量的被应用于各种信息基础设备,成为高性能电子设备的核心器件。

但实际上片上多核系统的研究开始于上个世纪90年代中期,在过去的20多年中片上多核系统架构一直处于不断发展和演进中。由于应用领域和研究人员的学术背景不同,片上多核系统的研究从一开始就有着明显的“流派”之分。随着研究的持续深入,片上多核系统出现了越来越多的技术分支。这不但让广大吃瓜群众难以辨识,对于很多刚接触片上多核系统研究的硕士生和低年级博士生而言,搞清楚这些技术分支的区别与联系也并不是一件轻松的工作。

简单来说,片上多核系统由于起源不同、应用领域不同以及研究者的学术背景不同等原因,发展出了不同的技术路线。上文提到的Intel公司发布的Montecito处理器[1]和IBM公司发布的Cell处理器[2]就代表了两种最主要的技术路线。

Montecito处理器这一类片上多核系统源于Symmetric Multi-Processing System (SMP)系统,被称之为Chip Multiprocessors (CMP)(国内一般翻译为单芯片多处理器),主要用于高性能通用计算领域。Cell处理器这一类片上多核系统则由片上系统Systemon-Chip (SoC)演进而来,被称为Multi-Processors System-on-Chip (MPSoC)。这类片上多核系统主要作为一种高端的嵌入式处理器被应用于通信、信号处理、多媒体处理等领域。为方便行文,后文中直接使用CMP和MPSoC来指代这两类处理器。

采用CMP架构的片上多核系统通常被应用于工作站、服务器、云计算平台等通用计算设备,所运行的主要应用通常是以科学计算、仿真模拟为代表的大数据量通用计算。这类片上多核系统大多采用数据并行的并行程序开发模式,以共享存储器的方式来交换数据。这样的好处在于开发难度较低、程序的通用性较好,可以借用类似于OpenMP[3]这样已经较为成熟的并行编程模型加以开发。又由于科学计算、仿真模拟这类应用的特点通常是数据量超大,但不同处理器上所运行的核心程序往往是相同的。因此采用共享存储的方式可以使得多个处理器核心可以很容易共享同一块虚拟地址空间,这使得同一程序可以很方便的同时运行在不同的核心上,也可以很方便的共享同一个操作系统或管理程序。

Hydra处理器是1996年美国斯坦福大学研制集成了4个核心的处理器[4],它被认为是首款具备CMP性质的片上多核系统。

图1 Hydra处理器架构图,它被认为是首款具备CMP性质的片上多核系统

Hydra处理器采用了四个MIPS 处理核心,每个核心拥有私有的指令缓存(I-Cache)和数据缓存(D-Cache)。二级缓存为四个核心共享,通过核心自身的存储控制器(Memory Controller, MC)及一组总线与二级缓存(L2 Cache)、主存储器接口(Main Memory Interface)和输入输出总线接口(I/O Bus Interface)互连。由于片上的二级缓存为四个核心所共享,因此四个核心实质上在逻辑上具备单一的内存地址空间。这也使得共享同一个操作系统或管理程序成为可能。Hydra处理器为后续CMP架构片上多核系统的发展奠定了基础,这一架构的片上多核系统在后续的演进过程中始终被Hydra处理器的初始设计所影响。

而MPSoC诞生初期的主要代表是一些集成了多个数字信号处理器(Digital Signal Processor DSP)和微处理器(Microprocessor Unit MPU)的专用芯片。这些芯片主要被应用于数字电视、多媒体播放器等信号处理设备。与追求高性能的通用计算不同,MPSoC 主要应用领域所面临的主要问题是计算的实时性。由于计算任务的确定性更强,使得MPSoC的设计者和使用者能够也必须要精确的划分任务并合理的分配任务以应对各种挑战。

图2所示的Viper处理器[5],即为最早的一批MPSoC之一。

图2 Viper处理器架构示意图,它是早期MPSoC的代表之一

从图2中可以看出,整个芯片可以被划分为两个相对独立的子系统。分别以MIPS(PR3940)CPU和TriMedia(TM32)CPU为核心。图左侧为以MIPS(PR3940)CPU为核心的子系统,这部分子系统的架构类似于一个通用的嵌入式SoC芯片,集成了如UART、IEEE 1394协议控制器之类的接口模块。图右侧为以TriMedia(TM32)CPU为核心,在这一子系统中集成了如MPEG-2视频解码器、视频输入处理器等多媒体处理单元,实质上构成了一个专用的多媒体处理器。因此可以很清楚的判断Viper处理器中以MIPS(PR3940)CPU为核心的子系统主要负责通用处理器控制和数据传输方面的功能,而以MIPS(PR3940)CPU为核心的子系统则主要负责多媒体信号处理。两个子系统相对独立,通过Fast C-Bridge、MIPS C-Bridge以及C-Bridge三个总线桥相互连接。

Viper处理器的架构很清晰的体现了MPSoC的一些典型特点:按任务需求划分为若干独立的子系统,每个子系统完成一个专门的功能,子系统之间相对独立等。这种架构设计方法充分体现了嵌入式系统的特性,因而被后来的研究者所继承和发扬。

RAW[6]是一代具有划时代意义的片上多核系统。虽然它被发表于1997年,但它却奠定了今后20年采用片上网络互联的CMP的基本架构。

图3 首次采用Tile结构和网络化互联的CMP架构芯片:RAW

RAW是由美国麻省理工学院于1997年提出并流片验证(从这里也可以看出美国在于高端系统芯片领域的积累深厚,回想我们1997年的芯片设计水平也才刚刚进入到能把EDA工具流程用起来,开始做ASIC的水平。龙芯等一大批处理器芯片设计都要等到2000以后)。

RAW微处理器架构采用了一种被称为Tile(国内有国内文献有直译为瓦片,为避免歧义本文中均使用英文原文指代)的模块划分方式。这种划分方法把CPU、私有Cache(L1 Cache)、共享Cache(L2 Cache)的一个Bank(一直不知道这个该怎么翻译……)、网络接口(Network Interface NI)等硬件资源构建为一个独立的Tile。在不同的Tile在芯片规划的平面内按一定的规律整齐排列,Tile和Tile之间通过NoC加以互联。这种采用Tile来划分和组织片上多核系统的方式优势在于每个核心比较规整,有利于芯片后端设计并具备较好的可扩展性。此后虽然有一些其它形式的核心划分与组织方式的论文发表,但基于Tile的划分与组织方式始终被绝对部分研究者(灌水者)所继承。

接下来看一看比较近的一点的CMP架构的片上多核系统,32核心SPARC M7处理器[7]。发布于2015年的ISSCC上。

图4 32核心SPARC M7处理器逻辑结构图

该款处理器共有32个核心,每4个核心构成一个组(文章中称其为SCC),总共8个组。每个组内部共享L2 Cache,但其它组不能访问。L3 Cache为全局共享Cache,可以被所有的所有核心访问。L3 Cache同样被划分为8个独立的bank,和对应的每个组一起组成了一个完整的Tile。

为了更有效的互联各个不同的Tile,研究者为SPARC M7处理器设计了三套不同的片上网络。分别是采用环网(Ring)结构的请求网络(Request Network),采用广播(Broadcasting)结构的响应网络(Responses Network)以及采用网格(Mesh)结构的数据网络(Data Network)。不同的片上网络分别传送不同的控制信息和数据,从而使得访问Cache的效率能最大限度的提高。

片上网络成为CMP架构的片上多核系统内部互联的主流方式之后,片上缓存的组织方式也相应的发生了改变。在使用总线或交换结构的时代,CPU访问不同Cache Bank的时间是基本保持一致的。但在使用片上网络作为内部互联以后,CPU访问不同的Cache Bank的时间已经不可能保持一致了。因此一种被称为非均匀高速缓存体系结构(Non-uniform Cache Architecture, NUCA)的概念被提出。NUCA是基于片上网络的CMP片上多核系统所必然要面临的问题,但对NUMA的研究也推动了基于片上网络的CMP片上多核系统向前持续演进。改进NUMA条件下CMP架构片上多核系统的访存效率,也成为提升CMP架构片上多核系统性能的主要途径。由于这部分内容涉及到较多存储体系结构方面的研究,在计算机系统结构的研究中属于另外一个领域。超出了本文甚至本系列文章所讨论的范围,因而在此不再进一步展开讨论。

当然,也不是所有的CMP架构的片上多核系统从此就走上了依靠NoC互联的道路。当核心数量不多的时候确实没有必要考虑使用NoC。例如AMD的Zen就是没有依靠NoC而采用了一种叫Core Complex (CCX)的方式互联[8]。

图5 采用CCX互联的Zen,依然具备CMP架构的基本特征

从图5可以看出,Zen虽然核心比较少,但仍然是典型的CMP架构。

谈了很久的CMP,我们回头再来看一看MPSoC。相比于CMP的规整、对称的架构,MPSoC是由若干个独立的子系统构成的。图6是Intel在今年ISSCC上发布的面向机器人的Robot SoC[9]。

图6 面向机器人的Robot SoC,典型的MPSoC架构

图6中有若干个子系统。左边第一个是以X86处理器为核心的实时子系统,主要负责对外接口通信与控制,所以和SPI、I2C等外设接口划分到一起了。Tensilica DSP则是负责信号处理运算的一个子系统。有一个Always on子系统是常开的,主要负责音频方面的处理,应该是用于芯片的唤醒。还有路径规划硬件加速器、运动控制硬件加速器等一系列加速器以及由X86处理器配合CNN加速的应用子系统,用于实现人工智能算法

图7是Robot SoC[9]所实现的算法,可以看出是由多个独立任务构成的。这种形式的应用比较容易被划分为若干个独立子系统来实现。这也是MPSoC主要应用领域里的各种算法 的基本特征。

图7 Robot SoC所需要实现的算法

如果芯片内部的子系统较多,关系复杂,当然也可以依靠NoC来互联。比如刚刚被收购的sonics公司就给了这么一个例子[10]。

图8 Sonics公司给出的高性能片上网络在SoC中的应用

可以看出,在MPSoC中有多个独立的子系统时,使用片上网络是一种必要的片上通信方式。

最后,我们稍作总结:

1.片上多核系统是现在系统级集成电路的主要实现形式;

2.片上多核系统分为CMP和MPSoC两种架构;

3.CMP主要用于通用计算,大多采用数据并行的并行程序开发模式,以共享存储器的方式来交换数据,通常以对称的Tile形式来组织芯片硬件结构;

4.MPSoC主要用于嵌入式设备,大多是由多个相对独立的子系统构成,一般“按需设计”,结构极不对称。

本次先谈到这里,下回来谈一下不同片上多核系统的互联需求。也讲一下片上多核系统的发展如何引导片上网络的发展的。

参考文献:

[1] C. Mcnairy, R. Bhatia. Montecito: A Dual-Core, Dual-Thread Itanium Processor[J]. IEEE Micro, 2005, 25(2):10–20

[2] J. Kahle. The cell processor architecture[C]. 38th annual IEEE/ACM International Symposium on Microarchitecture, Washington, DC, 2005, 49–56

[3] Dagum L, Menon R. OpenMP: an industry standard API for shared-memory programming[J]. IEEE computational science and engineering, 1998, 5(1): 46-55.

[4]K. Olukotun, B. A. Nayfeh, L. Hammond, et al. The case for a single-chip multiprocessor[C]. Seventh international conference on Architectural support for programming languages and operating systems, New York, 1996, 2–11

[5]S. Dutta, R. Jensen, A. Rieckmann. Viper: A multiprocessor SOC for advanced set-top box and digital TV systems[J]. IEEE Design Test of Computers, 2001, 18(5):21–31

[6]J. Babb, M. Frank, V. Lee, et al. The RAW benchmark suite: computation structures for general purpose computing[C]. The 5th Annual IEEE Symposium on Field-Programmable Custom Computing Machines, Vancouver, 1997, 134 – 143

[7] Oracle, Redwood Shores, CA:A 20nm 32-Core 64MB L3 Cache SPARC M7 Processor 2015 IEEE International Solid-State Circuits Conference

[8] Singh, Teja, et al. "3.2 Zen: A next-generation high-performance× 86 core." 2017 IEEE International Solid-State Circuits Conference (ISSCC). IEEE, 2017.

[9] Honkote, Vinayak, et al. "2.4 A Distributed Autonomous and Collaborative Multi-Robot System Featuring a Low-Power Robot SoC in 22nm CMOS for Integrated Battery-Powered Minibots." 2019 IEEE International Solid-State Circuits Conference-(ISSCC). IEEE, 2019.

[10]NoC | The Traffic Cop

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 集成电路
    +关注

    关注

    5320

    文章

    10732

    浏览量

    353375
  • 多核系统
    +关注

    关注

    0

    文章

    10

    浏览量

    7416
  • 处理器芯片
    +关注

    关注

    0

    文章

    114

    浏览量

    19654

原文标题:【博文连载】详说片上网络之一:片上多核系统与片上网络的发展

文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32flash能否读取正在运行的代码段内容?

    如题 小弟想请教下大家 STM32flash的读取问题。举个例子: 函数的功能是 读取flash 0x0800_1000~0x0800_2000的存储内容 函数存储在flash
    发表于 04-16 07:22

    ADSP21479已编译好的工程如何烧写至ROM呢?

    21479内有4Mb的ROM,请问现在已编译好的工程如何烧写至ROM呢? 此外,在使用ADSP-BF592时,ROM能否用于用户
    发表于 01-15 08:06

    使用两AD9739做同步,按照datasheet page48方式配置,电两的输出相位不固定是为什么?

    现使用两AD9739做同步,按照datasheet(rev.c)page48方式配置,寄存器回读值都正常,但是每次电两的输出相位不固定,请问是什么原因造成的? 现在尝试的方法: 1. 两
    发表于 12-13 06:16

    如何保证2AD9735的同步?

    AD9516提供600MHz时钟。FPGA为2路DAC输出IQ数据,该数据保存在一ROM中,从而保证IQ基带信号的严格对起。现在发现,2AD9735的输出发生错位,错位0~4个DAC时钟周期。而且,每次
    发表于 12-11 06:37

    AD7606连接MCU,只能一可以工作是怎么回事?

    RD 分开 RESET下拉 STBY拉 REF下拉 PAR下拉 OS下拉 输出口: BUSY下拉 db0- db15 db0- dbb15三AD7606连接
    发表于 12-08 06:25

    求助,关于多AD7793的电路设计及驱动问题

    上图为设计出的多路AD7793的采集系统,使用STM32的一个SPI端口与四AD7793通信,利用4个STM32的I/O口进行选。 在编写驱动程序时,如果不改变选信号,只选定一
    发表于 12-04 06:17

    求助,关于多AD7606的参考电压问题

    你好, 我现在使用了两AD7606,并将他们的REFIN/REFOUT脚连接在一起,通过一个跳线帽和外部基准电压芯片相连,我想实现两种可选的参考电压方案: 1. 一启用内部基准,一禁止内部基准
    发表于 12-04 06:10

    AD9739的同步如何实现?

    模式,两可以分别工作,但灌入相同信号,每次电二者无固定相位关系 而配置0x10寄存器让A做sync master,B做sync slave,始终无法同步,而且A的输出不正常。 请问应当如何正确
    发表于 11-27 14:45

    STM32F2闪存介绍

    闪存特性和系统框图  存储空间组织架构  用户闪存  系统闪存  OTP  选项字节  闪存读接口  等待周期  指令预取  指令高速缓存  数据高速缓存 
    发表于 09-13 07:10

    请问外挂FLASH和FLASH只能二选一吗?

    1、使用STM32F4XX,FLASH大小为1M,然后外挂一W25Q128的FLASH,该外挂FLASH做文件系统使用,在ENV里面使能
    发表于 09-08 17:44

    AXI寄存器的功能

    此配置中未使用时序隔离。 通道的主、从接口直接连接。 图4显示了旁路模式。 您可以将寄存器包括在系统设计中,而无需考虑需求。 如果初始合成运行后显示通过互连的关键路径,则可以将寄存器切换到旁路模式以解决问题
    发表于 08-21 06:00

    Arm CoreLink NI-710AE上网络互连技术参考手册

    Arm®CoreLink™ NI‑710AE上网络互连是一种高度可配置的AMBA®兼容系统级互连,可实现汽车和工业应用的功能安全。使用NI‑710AE,您可以创建一个非相干互连,该互连针对SoC
    发表于 08-08 06:24

    HPM6000系列微控制器闪存使用指南

    HPM6000系列MCUFlash使用指南
    发表于 06-02 08:54

    FPGA系统设计中,如果用两个FPGA工作,应该如何设计两之间的通信?

    FPGA系统设计中,如果用两个FPGA工作,应该如何设计两之间的通信?从的配置和时钟输入与主有何不同?一个做主用于数据处理和控制,一
    发表于 05-08 17:18

    如何才能使用iMXRT1176的SRAM和QSPI flash?

    我们正在使用 iMXRT1176。我们的要求是使用SRAM和QSPI flash。 我们在 SDK 中使用 sd_jpeg 示例并且它运行完美。 给出了两个 icf 文件: 1) 内存
    发表于 05-05 06:38