EDN China > 设计实例 > EDA工具与服务 > IP核 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

基于SystemC的异构多核通信模块设计

微计算机信息 上海交通大学微电子学院 唐豪川 祝永新?? 2010年04月19日 ?? 收藏0

  1 引言

  如今,随着集成电路工艺发展到深亚微米的阶段,处理器体系结构的设计研究正朝着多 核的方向发展。Intel、IBM、SUN 等主流芯片产商已经在市场上发布了自己的多核处理器。 目前多核处理器的发展尚处于起步阶段,有很多问题还有待解决。其中,一个十分重要的方 面就是设计高效的片上通信架构[1]。多个内核上同时执行的各个程序之间可能需要进行数据 共享与同步,因此多核处理器的硬件结构必须支持各个CPU 内核之间的通信。一般说来, 异构多核处理器和同构多核处理器在通信机制的设计上有着不同的考虑。异构多核处理器通 常是针对嵌入式系统的应用,主要存在着总线、存储控制器、共享存储区等通信机制。

  异构多核处理器系统的几种主要通信机制,事实上都可以通过一个共享存储区来实现 [2],例如邮箱、消息、信号量实际上都是以共享存储区作为传播载体。同时,也考虑到 SystemC 的设计方法可以支持设计者在不同层次上建模减小了代码量和工作量,提供了更高的工作效 率。因此本文在采用共享存储器通信机制[3]的同时,基于SystemC 提出且建立事务级多核通 信模型,并利用MP3 解码程序实例证明了本模型有效的实现了多核间的通信。

  2 SystemC 通信总线模型

  2.1 SystemC 简介

  SystemC 由C++衍生而来,在C++基础上添加硬件扩展库和仿真库构成,从而使SystemC 可以建模不同抽象级别的包括软件和硬件的复杂电子系统[4]。他的最基本的结构单元是模块 (module),模块可以包含其他模块或过程(process)和方法(method),过程如同C 语言中的函 数用以实现某一行为模块,通过接口(port) 与其他模块通信接口之间用信号(Signal) 相连。 一个完整的系统由多个模块组成,每个模块包含一个或多个过程和方法,过程是平行工作的。 基于SystemC 的设计方法支持设计者在不同层次上建模减小了代码量和工作量提供了更高 的工作效率,也就是说利用SystemC 与传统的方法相比可以更为高效快速地进行仿真。

  2.2 模块细化及基于SystemC 的通信总线行为级建模

   一个典型的片上系统模型框架通常包括总线、总线仲裁器、微处理器、数字信号处理器 (L6P)、存储器和其他专用集成电路(ASIC)。这样一个复杂的系统,传统的设计办法是全部 使用C/C++进行描述以进行系统级建模和验证,然后将硬件部分的描述手工翻译为 VHDL/Verilog HDL,等硬件描述语言进行描述.等硬件全部实现后再进行软件的设计与实现。在引入SystemC 作为建模语言的情况下,整个系统可以方便地用一种语言进行描述、 建模、仿真、细化,直到最终实现。

  在使用 SystemC 建立片上总线行为级模型时,根据总线一般模型中各个模块的行为特 性,进行了进一步的模型细化,得出片上总线行为级模型的SystemC 模块结构图,如图1 所示。在模型细化的过程中,总线主设备被划分为直接型主设备、阻塞型主设备和非阻塞型 主设备;总线从设备被划分为快速存储器、慢速存储器和代表ASIC 的通用串口;通信总线和 仲裁器模块保持不变。

SystemC 模块结构图

  总线采用分层通道的方式实现,实现了直接型接口、阻塞型接口和从设备接口。在某些 时钟的上升沿,总线收集到来自各个主设备的从设备读写请求,并将这些请求加入请求队列。 在时钟的下降沿,总线将请求发送给总线仲裁器,由总线仲裁器根据一定的仲裁规则进行仲 裁,从请求队列中选择出合适的主设备请求并通过从设备接*由总线从设备进行服务。

  3 基于异构多核的通信模块设计与实现

  3.1 设计原理

  按照上文中提到的总线架构,多核处理器作为通信总线的主设备而共享存储区作为总线 的从设备形成了整个系统模型,但考虑到异构多核与同构多核相比存在一个问题:即由于不 同内核的应用程序采用的是不同的交叉编译器,因此高级语言所指定的内存空间是无法做到 一致的,即便是直接写汇编程序指定内存地址,由于操作系统分配给不同模拟器的程序空间 是不同的,也无法做到共享存储。也就是说,无论是高级语言编程,还是汇编语言编程,都 要解决二进制代码和内核模拟器之间的通信。因此上文中提到的基于SystemC 的通信总线 就需要针对不同的异构多核组合进行相应的修改,缺少通用性,违反了模块设计封装化原则。

  经过不断的探索和比较,本文最终采用了一种从方法学角度和可扩展性角度来看,都比 较合适的方法: 在各个处理器与通信总线之间添加一个通信控制模块(CMCCtrl-- Communication control)如图2 所示。

通信控制模块


上一页123下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

SystemC? 异构多核? 行为级建模?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈