本发明专利技术提出一种满足systemC语法的先进先出队列组,包括多个先进先出队列单元,所述先进先出队列单元向对应的事件处理单元组输出数据写入事件信号和数据读出事件信号,并且包括按照SystemC语法的sc_fifo(name,size)、sc_fifo(size)、sc_fifo.read()、sc_fifo.nb_read()、sc_fifo.write()、sc_fifo.nb_write()、sc_fifo.num_available()、sc_fifo.num_free()函数代码实现的逻辑电路,所述逻辑电路允许软件开发工具的映射算法将位于不同处理单元的多个先进先出队列单元重新组合,共同完成sc_fifo语法单元所定义的功能。实现了支持SystemC语法单元sc_fifo到芯片内资源映射,使得先进先出队列可以用于任何多个处理单元之间、处理单元和外设之间的资源共享与同步。
【技术实现步骤摘要】
本专利技术涉及一种多核处理器,更具体地,本专利技术涉及一种满足SystemC语 法要求的多核处理器的先进先出队列单元组。
技术介绍
近年来,多核处理器技术得到了蓬勃发展。究其原因,主要有以下几点 第一,设计需求;硅的成本越来越低,集成度越来越高,多核的规则结构可简 单有效的利用更多的硅面积;第二,业务需求;多媒体业务越来越复杂,要求 平台的灵活性和处理性能越来越高,同时还要求功耗保持在允许的范围内,多 核处理器可潜在提供最高性能功耗比,可供更高性能的计算和灵活性;第三, 上市时间(Timetomarket)需求;上市时间要求越来越短,多核处理器的并行开发 可以满足所需上市时间。通常,多核处理器有以下两种发展模式。第一类多核处理器不改变现有顺序执行的设计流程和编程模式,只是采用 更先进的编译技术来适应多核的架构。多核在这里起的作用仅是代替单核而提供更多的计算功能。目前多数的处 理器,无论是单核还是多核,都采用顺序执行的编程模型。在这种模型下,为 了支持多任务,引入了支持多任务的操作系统。操作系统可以为进行多任务编 程和并行执行代码提供途径。但是,在存在操作系统和多个任务并行存在的情 况下,整个嵌入式系统又变得相对十分复杂,调试难度与单核单任务相比大大 增加。 一种调试方式为断点调试,当处理器在断点处暂停执行时,外部输入条 件仍然可能发生变化,因为处理器的暂停,错误发生的条件可能不能再现。另 外一种调试方式为打印输出,将可能出错的地方打印出来,由于打印的结果可 能非常繁多,错误难以定位。而且一旦处理器执行出错,可能在错误发生前打 印本身已经不能工作。引入了操作系统后的另外一个问题是处理器的空闲运转 导致的电量浪费。由于有多个任务,虽然外设可以根据需要进行停止,但处理 器在什么时候应该进入节电模式以及何时从节电模式中恢复变得难以确定,从而导致电量浪费。据统计,由于上述原因,造成大约一半的嵌入式系统项目失 败。(2)第二类多核处理器采用并行语言和编程模式,根据并行语言和编程模 式的需要来设计处理器的物理架构。采用这种方式设计的多核处理器能够与并 行语言紧密配合,并期望克服第一类处理器调试困难和电量浪费的缺点。目前的多核处理器都属于第一类,而第二类处理器仍然处于发展初期,没 有成熟的设计应用。
技术实现思路
为克服现有多核处理器调试困难并且不支持并行语言的缺陷,本专利技术提出 一种满足SystemC语法要求的多核处理器的先进先出队列单元组。才艮据本专利技术的一个方面,提出了 一种满足systemC语法的先进先出队列组, 包括多个先进先出队列单元,所述先进先出队列单元向对应的事件处理单元组 输出数据写入事件信号和数据读出事件信号,并且包括按照SystemC语法的 sc_fifo(name,size)、 sc—fifo(size)、 sc—fifo.read()、 sc—fifo.nb—read()、 sc一fifo.write()、 sc—fifo.nb—write() 、 sc—fifo.num—available() 、 sc—fifo.num—free() 、 sc—fifo.data—written—event()、 sc—fifo.data—read—event()函It^码实现的逻辑电路, 所述逻辑电路用于向处理器核运行时控制器发送激活和暂停处理器的信号,并 使得软件开发工具的映射算法将位于不同处理单元的多个先进先出队列单元重 新组合,共同实现SystemC SLfifo语法所定义的功能。其中,所述先进先出队列包括本地FIFO;数据发送引擎,与所述交换单元适配器相连,用于发送数据包; 数据接收引擎,与所述交换单元适配器相连,用于接收数据包; FIFO访问控制器,与所述数据发送引擎、所述数据接收引擎、所述本地FIFO 相连,用于根据本地FIFO的状态控制数据包的发送和接收,输出处理器暂停或 运行信号到处理器运行时控制器,输出写操作和读操作事件通知到事件处理单 元组;SC—FIFO寄存器组,与本地总线接口和FIFO访问控制器相连接,包括非阻 塞读寄存器和非阻塞读端口状态寄存器。其中,处理器核中运行的用户代码中的函数sc—fifo.read()、 sc_fifo.nb_read()、 sc一fifo.write()、 sc—fifo.nb—write()、 sc_fifo.num—available()、 sc—fifo.num—free()只十应于对所述SC_FIFO寄存器组中的对应寄存器的操作。 其中,所述先进先出队列的工作模式包括模式0,读写本地,本地SC—FIFO单元由本地处理单元控制,该模式下 SC—FIFO单元成为一个基本FIFO;模式l,读本地,表示数据被存储于本地,本地进程只读取FIFO;模式2,写远程,表示数据被存储于远程,本地进程只写FIFO,并将写数 据发送到远端的SC—FIFO单元;模式3,写本地,表示数据存储于本地,位于其它处理单元的SC—FIFO进 行远程读操作;模式4,读远程,表示数据存储于远程位于其它处理单元的SC_FIFO。其中,所述数据发送引擎根据所述数据接收引擎的ACK通知、RTY通知或 者重传通知,通过交换单元适配器向远端SC—FIFO发送应ACK和RTY应答以 及重新发送上 一 次发送的数据请求帧。其中,当SC—FIFO单元工作在所述模式2,当本地FIFO非空时,所述数据 发送引擎将存储的数据封装成写请求包发送到发送远端SC—FIFO单元;当 SC—FIFO单元工作在模式4,当接收到来自FIFO访问控制器的数据读通知时, 所述数据发送引擎发送数据读请求给远端SC—FIFO单元。其中,数据写入和读出事件只反映本地FIFO中发生的事件;其中,在才莫式2下,本地处理器核的写操作先写在本地FIFO,然后由本地 FIFO送到接收该数据的远端FIFO。其中,所述FIFO访问控制器为SC—FIFO寄存器组,包括SC^FIFO识别寄存器,用于存储SC—FIFO的名称;控制寄存器,用于区分该SC^FIFO单元的工作模式;SC一FIFO阻塞写寄存器,当处理器核写该寄存器时,SC^FIFO寄存器组将 数据写入到本地FIFO中,输出暂停或者执行信号;SCLFIFO非阻塞写寄存器,当处理器核写该寄存器,则SC—FIFO寄存器组 将数据写入到本地FIFO中,若此时本地SC—FIFO已满,则该寄存器被更新为写 操作失败;SC一FIFO非阻塞写端口状态寄存器,用于存储上一次非阻塞写寄存器操作 的结果;SC—FIFO剩余空间计数寄存器,通过本地FIFO的剩余空间计数表示整个 SC—FIFO的剩余空间计数;SC一FIFO占用单元计^:寄存器,通过本地FIFO的占用单元计数表示整个 SC—FIFO的占用单元计it。其中,所述SC一FIFO寄存器组还包括SC_FIFO阻塞读寄存器,处理器核通过该寄存器阻塞读取SC_FIFO;SC一FIFO非阻塞读寄存器,处理器核通过该寄存器非阻塞读取SC—FIFO;SC—FIFO非阻塞读端口状态寄存器,用于纪录上一次非阻塞读操作的状态;本地SC—FIFO地址寄存器,用于纪录本地SC—FIFO单元的全局地址,数据 发送引擎以所述全局地址为数据包的源地址;远端SC一FIFO地址寄本文档来自技高网...
【技术保护点】
一种满足systemC语法的先进先出队列组,包括多个先进先出队列单元,所述先进先出队列单元向对应的事件处理单元组输出数据写入事件信号和数据读出事件信号,并且包括按照SystemC语法的sc_fifo(name,size)、sc_fifo(size)、sc_fifo.read()、sc_fifo.nb_read()、sc_fifo.write()、sc_fifo.nb_write()、sc_fifo.num_available()、sc_fifo.num_free()、sc_fifo.data_written_event()、sc_fifo.data_read_event()函数代码实现的逻辑电路,所述逻辑电路用于向处理器核运行时控制器发送激活和暂停处理器的信号,并使得软件开发工具的映射算法将位于不同处理单元的多个先进先出队列单元重新组合,共同实现sc_fifo语法单元所定义的功能。
【技术特征摘要】
【专利技术属性】
技术研发人员:陈曦,黄毅,刘祥,张金龙,任菲,
申请(专利权)人:中国科学院计算技术研究所,
类型:发明
国别省市:11[中国|北京]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。