(电路与系统专业论文)基于Spock的软件开发工具链研究和设计[电路与系统专业优秀论文].pdf_第1页
(电路与系统专业论文)基于Spock的软件开发工具链研究和设计[电路与系统专业优秀论文].pdf_第2页
(电路与系统专业论文)基于Spock的软件开发工具链研究和设计[电路与系统专业优秀论文].pdf_第3页
(电路与系统专业论文)基于Spock的软件开发工具链研究和设计[电路与系统专业优秀论文].pdf_第4页
(电路与系统专业论文)基于Spock的软件开发工具链研究和设计[电路与系统专业优秀论文].pdf_第5页
已阅读5页,还剩65页未读 继续免费阅读

(电路与系统专业论文)基于Spock的软件开发工具链研究和设计[电路与系统专业优秀论文].pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于s p o c k 的软件开发工具链研究和设计 4 2 1i , c c 的数据结构。 4 2 2i , c c 的编译流程 。3 0 3 7 4 0 4 2 4 4 4 4 4 5 。4 8 4 8 。5 0 。5 1 。5 7 。5 7 4 2 3l c c 的词法和语法分析 4 2 4l c c 的后端设计 4 3 l c c 在s p o c k 上的实现。 4 3 1 基本数据结构定义 4 3 2 寄存器和存储器使用约定 4 3 3 函数调用约定 4 3 4 指令选择 4 3 5 寄存器分配 4 3 6 前后端接口函数实现 4 4s p o o k 中对l e e 的优化 4 a 1 临时寄存器的分配优化 4 a 2 寄存器变量分配寄存器的优化 第五章s p o o k 工具链其他工具的设计 5 1s p o o k 的汇编器 5 9 6 0 5 2s p o o k 的链接器 5 3s p o o k 指令仿真器和调试器 第六章总结与展望 6 1 总结 6 2 展望 参考文献 致谢 6 0 6 2 6 4 6 6 6 6 6 6 6 8 7 l 图目录 图1s p o e k 的体系结构框图 图2s p o e k 的流水线结构图 1 3 1 7 1 8 2 0 2 1 2 2 2 3 2 4 2 7 图3s p o o k 控制通路结构框图 图4s p o c k 的外部接口 图5 工具链的组织结构图 图6 编译器流程图 图7 语法树 图8 注释树 图9 汇编器的工作过程 图1 0 符号结构的类图 图1 1 符号表结构的类图 图1 2 符号表的示例图 图1 3 类型结构的类图 图1 4 类型结构的示例 图1 5 类型表 图1 6a s t 示例图 图1 7 树结构的类图 3 0 3 l 3 2 3 2 3 3 3 4 3 4 3 5 浙扛大学硕士学位论文 图1 8d a g 示例图 图1 9 节点结构的类图 图2 0 代码结构的类图 图2 1 代码表的示例图 图2 2l c c 的函数处理过程 图2 3 复合语句的处理流程图 图2 4 语句的处理流程图 图2 5 函数处理过程 图2 6 存储器的使用约定 图2 7 存储帧的布局 图2 8 存储帧的示例图 图2 9d a g 示例图 图3 0 接口结构的类图。5 l 曩y 毫尹 图3 l 汇编器的程序结构 图3 2 链接器的工作流程 图3 3 指令仿真器的结构图 表格目录 表格1s p o c k 条件执行指令条件码 表格2 并行指令格式 表格3 并行l o a d 的指令编码 表格4s p o c k 的指令集 表格5l c c 的类型结构类表 表格6s p o c k 的c 编译器基本数据结构 表格7s p o c k 的寄存器使用约定 表格8t e s t c a s e 描述 表格9 临时寄存器v s 代码长度 表格1 0 寄存器变量寄存器v 8 代码长度 6 0 6 2 6 4 1 4 1 5 1 5 3 3 4 4 4 5 5 8 5 8 5 9 弘弘竹竹弘”剪铊撕盯钉盼 浙江大学硕士学位论文 基于s p o o k 的软件开发工具链研究和设计 摘要 随着集成电路和半导体的迅速发展,d s p 处理器的应用得到了广泛的推动, d s p 的设计由三个部分组成:d s p 的硬件实现,软件开发工具链的设计以及系统 综合和验证。软件开发工具链在整个流程中占据着重要的作用。 本文研究了软件开发工具链的组织结构、设计理论及实现原理,工具链涉 及到编译器,汇编器,链接器,仿真器和调试器。在此基础上,针对自主研发 的嵌入式d s p 处理器s p o c k 设计了一套软件开发工具链。s p o c k 是一个3 2 位指 令、1 6 位数据、r i s c 结构的d s p 处理器,能够用于音频处理和视频处理s o c 进 行熵编解码加速。软件开发工具链中,编译器基于l c c 进行了设计改进,然后 移植了前端代码,开发后端并加入优化。汇编器用c c + + 开发,完成前端词法 语法分析和后端目标代码生成,链接器用x m l 脚本辅助设计,完成符号解析和 重定位。仿真器和调试器用c c + + 完成实现。 本文研究设计的编译器,汇编器,链接器,仿真器和调试器具有很好的性 能和可靠性,对d s p 的设计起到了很好的推动作用。同时,本文在软件开发工 具链的设计中总结了针对d s p 的软件工具链的设计流程,该方法具有一定的通 用价值,尤其对探索d s p 开发的合理化流程有重要贡献。 关键词:d s p 软件工具链编译器汇编器 - i 基于s p o c k 的软件开发工具链研究和设计 r e s e a r c ha n d d e s i g no f t o o l - c h a i ns o f t w a r ed e v e l o p m e n t b a s e do ns p o c k p r o c e s s o r a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to fi n t e g r a l e dc i r c u i ta n ds e m i - c o n d u c t o r , t h e a p p l i c a t i o no fd s p 珥o c 髓s o ri so fg r e a ti m p m v e m 髓l1 1 砖t o t a ld e s i g np r o c e s so f d s pi sc o m p o s e do fi t sh a r d w a l 瞎i m p l e m e n t a t i o n , t o o l - c h a i ns o f t w a r ed e v e l o p m e n t a n ds y s t e ms y n t h 醯& v e r i f i c a t i o n t o o l - c h a i ns o f t w a r ed e v e l o p m e n tt a k e st h e i m p o r t a n ts t a t u s t h i st h e s i ss t u d i e dt h es t r u c t u r eo ft o o l - c h a i ns o , w a r ed e v e l o p m e n ta n di t s s p e c i f i cd e s i g nt h e o r ya 8w e l l 鹪i m p l e m e n t a t i o np r i n c i p l e s t h ct o o l - c h a i nh e r e r e f e r r e dt oc o m p i l e r , a s s e m b l e r , l i n k e r , s i m u l a t o ra n dd e b u g g e r o nt h i sb a s e ,w e d e s i g n e das e to ft o o l - c h a i nf o rs p o o k , ad s pp r o e , c 塔s o rd e v e l o p e db yz h ej i a n g u n i v e r s i t y s p o c ki sp r o c e s s o rw i t h3 2 - - b i ti n s t r u c t i o n , l & b i td a t aw i d t ha n d a r c h i t e , c l m r eo fr i s c i t 啪b eu s e di na u d i op r o c e s s i n ga n de n c o d e d e c o d e a c c e l e r a t i n g 勰i nv i d e op m s s m gs o c h e r ew ei m p m v e dl c ca n dp o r t e di t s f i o n t - e n dc o d e sa sf o rc o m p i l e ra n dd e v e l o p e da s s e m b l e ru s i n gc c + + w i t hl i n k e ri n x m l s i m u l a t o ra n dd e b u g g e ra l s oa d a p t e dc ,c + + l a n g u a g ep r o g r a m m i n g r 1 1 玲c o m p i l e r , a s s e m b l e r , l i n k e r , s i m u l a t o ra n dd e b u g g e rd e s i g n e dh e r ea r eo f h i g hp e r f o r m a n c ea n dr e l i a n c e , 1 1 1 e ys u p p l i e sg r e a th e l pf o rd s pt o o l - c h a i ns o f t w a r e d e v e l o p m e n td e s i g n i n g m e a n w h i l e ,w ec o n c l u d e dt h em e t h o do f t o o l - c h a i ns o f t w a r e d e v e l o p m e n tw h i c hh a st h eu n i v e r s a lv a l u e ,a n de s p e c i a l l yc o n t r i b u t e st oe x p l o r i n g r a t i o n a ld e v e l o p m e n t p r o c e s so f d s p k e y w o r d s :d s p , t c o l - c h a i n $ o f h a l ed e v e l o p m e n t , c o m p i l e r , a s s e m b l e r 一2 - 基于s p o c k 的软件开发工具链研究和设计 第一章绪论 上个6 0 年代以来,随着计算机和信息技术的飞速发展,数字信号处理 咖ls i g n a lp r o c e s s i n g ) 技术应运而生并得到迅速的发展。随着大规模集成电 路技术和半导体技术的发展,在各种实时处理应用需求的推动下,d s p 处理器 已经在很多领域得到极为广泛的应用,其处理能力也正以指数级的速度飞速提 升。d s p 设计是一个非常复杂的过程,包括3 个部分:d s p 硬件实现,工具链 的开发设计以及系统综合和验证。近几年通过e d a ( 电子设计自动化) 设计方法 和工具的逐步应用,大大缩短了微处理器硬件设计和综合的周期,而开发工具 链的设计反而成了一个瓶颈。好的工具链能够极大地提高嵌入式研发的效率, 使产品在最好的时间段( m a r k e t w h d o w ) 进入市场。这使得工具链的设计显得越 来越重要【1 】。 本章第一节分析了国内外i c 设计的状况,第二节介绍了d s p 处理器的概 念,第三节概括了软件开发工具链的设计方法,第四节分析了工具链的组织结 构,第五节介绍了课题的来源、研究的目的,第六节是本文的研究重点及章节 安排。 1 1 国内外i c 设计状况 人类社会已经步入高度发达的信息化社会,而信息化社会的发展离不开以 集成电路( i c ,i n t e g r a t e dc i r c u i t ) 为基础的电子技术和产品的进步。现代电子产品 在性能和功能不断提高的同时,价格却一直呈下降趋势,而且产品更新换代的 步伐也越来越快,实现这种进步最主要的原因是集成电路制造工艺及其设计技 术的持续发展。从1 9 4 7 年第一支半导体晶体管的发明,到1 9 5 8 年采用硅平面 工艺的集成电路诞生,直至目前正在发展中的系统芯片,集成电路的发展日新 月异,经历了小规模集成电路( s s l ) 、中规模集成电路o v i s l ) 到大规模集成电路 m s d 、超大规模集成电路( v l m ) ,而达到了今日的特大规模集成电路( u l s i ,集 成度 1 0 8 元件芯片) 阶段【2 】。半导体和集成电路一直遵循摩尔定律的预言高速 发展着,即硅芯片的器件集成密度每1 8 个月增长一倍。 浙江大学硕士学位论文 我国集成电路产业面临着巨大的挑战,当今世界经济已从工业化进入信息 化的发展阶段。微电子技术是高科技和信息产业的核心技术,成为当前新经济 时代的基础产业,它在国民经济和国防建设以及现代信息化社会中起着极其重 要的战略意义,与我国经济、政治、信息和国防安全息息相关。然而当前我国 微电子产业与国际水平相比还属于幼稚工业,无论技术水平、产品水平还是综 合实力都无法与发达国家同行的实力相抗衡。为此,要把集成电路产业作为重 点战略产业,进一步采取有力措施,加快发展速度,以满足我国经济建设、社 会进步和国防安全的需要。集成电路设计位于整个集成电路产业链的最上游, 可以带动整个产业及相关行业的发展,因此,近些年来受到了国家各主要部门 和学术界专家的高度重视。 1 2d s p 的发展 在当今的数字化时代背景下,d s p 处理器已成为遥信、计算机、消费类电 子产品等领域的基础器件。业内人士预言,d s p 将是未来集成电路中发展最快 的电子产品,并成为电子产品更新换代的决定因素。它将彻底变革人们的工作、 学习和生活方式。d s p 具有每个处理周期能够处理多条乘加操作能力,具有实 时运算能力、仿真能力和模拟能力,具有很强的通用性、高的可靠性且造价低 廉等特点。 d s p 发展历程大致分为三个阶段:7 0 年代理论研究阶段,8 0 年代产品普及, 9 0 年代迅速发展【3 】。在d s p 出现之前数字信号处理只能依靠普通微处理器来 完成,但微处理器较低的处理速度无法满足高速实时的要求。直到7 0 年代,才 提出了d s p 的理论和算法基础。那时的d s p 仅限于理论研究阶段,其应用领 域仅局限于军事、航空航天部门。随着大规模集成电路技术的发展,1 9 8 2 年世 界上诞生了首枚d s p 芯片,这种d s p 器件采用微米工艺n m o s 技术制作,虽 功耗和尺寸稍大,但运算速度却比普通微处理快了几十倍,尤其在语音合成和 编码解码器中得到了广泛应用。d s p 芯片的问世是个里程碑,它标志着d s p 应 用系统由大型系统向小型化迈进了一大步。至8 0 年代中期,随着c m o s 工艺 技术的进步与发展,第二代基于c m o s 工艺的d s p 芯片应运而生,其存储容 量和运算速度都得到成倍提高,成为语音处理、图像硬件处理技术的基础。8 0 基于s p o c k 的软件开发工具链研究和设计 年代后期,第三代d s p 芯片问世,运算速度进一步提高,其应用范围逐步扩大 到通信、计算机领域。9 0 年代d s p 发展最快,相继出现了第四代和第五代d s p 器件。现在的d s p 属于第五代产品,它与第四代相比,系统集成度更高,将 d s p 芯核及外围元件综合集成在单一芯片上。这种集成度极高的d s p 芯片不仅 在通信、计算机领域大显身手,而且逐渐渗透到人们日常消费领域。 经过2 0 多年的发展,d s p 产品的应用已扩大到人们的学习、工作和生活的 各个方面,并逐渐成为电子产品更新换代的决定因素 4 】。目前,对d s p 爆炸性 需求的时代已经来临,前景十分可观。美国半导体产业协会( s i a ) 最近预测,d s p 将推动未来半导体市场成长,而且亚洲,特别是中国将是i c 市场的成长动力。 在不久的将来,d s p 有可能成为最大的半导体行业。 1 3 软件开发工具链的设计方法 d s p 处理器是微处理器的一种,但这种微处理器具有很高的处理速度,因 为应用这类处理器的场合要求具有很强的实时性。在嵌入式微处理器设计中, 硬件的设计和与其配套的开发工具链的设计是同步进行的。一个完整的开发工 具链包括编译器、汇编器、反汇编器、链接器、仿真器、调试器等。如果设计 一套新的开发工具链,将耗费大量的资源和时间。如何提高开发工具链设计的 效率,成为嵌入式处理器设计中一个迫切的问题。 当前处理器开发工具链设计的3 个重要方向【5 】: ( 1 ) 可重定目标【6 】 目标处理器的建模和开发工具是软硬件协同设计的重要部分。嵌入式处理 器的开发商会为用户提供一套开发工具,包括指令集模型、汇编器、反汇编器 和编译器等,而每个开发商提供的开发工具是不同的。当客户需要使用其他开 发商生产的处理器时,必须学习使用一套不同的开发环境。最好是提供一套统 一的开发工具链,通过可重定目标的方法,支持多种处理器。当开发新的微处 理器时,只需对已有的开发工具进行移植,就可以支持新的微处理器,从而大 大缩短开发时间。 ( 2 ) 使用自动化的设计方法和工具 浙江大学硕士学位论文 传统的嵌入式系统设计是基于手工的设计。当前强调自动化设计为降低成 本和提高设计的效率,其中也包括开发工具链设计的自动化。自动生成开发工 具链是一个有吸引力的想法,可以使用e d a 的方法和工具实现这个目标。然而, 现存的e d a 工具和方法,多数用于硬件设计,在软件设计和软硬件综合中没有 发挥足够的作用。 ( 3 ) 与硬件设计协同进行阴 般嵌入式系统的硬件和软件设计同时进行。然而,直到建造一个硬件原 型,它们才可以综合。嵌入式系统软硬件协同设计,提倡将软硬件综合在整个 设计周期中提前,甚至早于硬件设计完成。这样可以及早地发现硬件设计的错 误,减少了用于跟踪和修正硬件设计错误的工作量。也可以使设计者更早地评 估系统设计的性能,及时地调整设计方案。因此,在硬件设计完成之前,需要 一系列工具用于模拟硬件的行为。 1 4 工具链组织结构 工具链包括编译器,汇编器,反汇编器,链接器,仿真器,调试器等。编 译器完成从高级语言c 语言到汇编代码的解析,包括词法扫描,语法分析,语 义分析,代码生成与优化工作。汇编器完成汇编指令代码到目标文件的解析, 包括前端词法语法分析和后端符号表,二进制代码生成。链接器主要负责把多 个目标文件链接成一个可执行文件,它的两个主要工作是符号解析和重定位。 仿真器用来模拟处理器的各项功能,调试器提供命令查看程序运行时的寄存器, 内存等的状态和内部数据。 1 5 课题的来源、研究目的 1 5 1 课题的来源 本课题来源于浙江大学和中天微系统有限公司合作开发的拥有自主知识产 权的异构多核媒体d s p 处理器的主控d s p 核s p o c k i 8 。作者参与了s p o c k 软件 开发工具链的研究和设计,结合项目需要和理论知识成果,完成此论文。 1 5 2 研究目的 总结出d s p 开发中有效设计软件工具链的方法。 开发一套d s p 软件工具链,探索d s p 开发的合理化流程。 对d s p 集成工具链平台进行方法学和可重用性研究,开发一套可重定目 标的软件工具链。 1 6 本文的结构和主要研究内容 本文对超大规模集成电路的数字信号处理器软件开发工具链进行了深入的 研究,总结了研究和设计过程中的经验和方法。全文内容组织如下: 第一章绪论,介绍集成电路设计发展的概况,数字信号处理器的特点和工具 链组织结构,以及本课题的来源、研究目的和意义。 第二章为数字信号处理器以及s p o c k 的特点介绍,详细的介绍了d s p 和一般 处理器的区别以及s p o c k 设计时的特性。 第三章为工具链的组织结构介绍,包括编译器,汇编器,链接器,仿真器和 调试器的工作原理及实现过程。 第四章为针对s p o c k l 拘软件开发工具链中编译器的研究实现,分析了l c c 的 设计原理,并基于s p o c k 的体系结构对它进行了移植,并且加入了优化。 第五章实现了基于s p o c k 的汇编器,链接器,仿真器,汇编语言调试器。第 四章第和五章涵盖了本次毕业设计的重点任务。 作。 第六章总结与展望,总结了论文的工作,并指出了基于论文的下一步研究工 浙江大学硕士学位论文 第二章d s p 及s p o c k 介绍 2 1d s p 概念及特点 d s p 处理器是微处理器的一种,但这种微处理器具有很高的处理速度,因为 应用这类处理器的场合要求具有很强的实时性。比如移动电话双方通话时,如果 处理速度不快通话过程中就会出现停顿。d s p 的应用决定了它具有和普通微处理 不同的特点。 2 1 1 指令集的比较 d s p 指令集的特点在于能够充分利用处理器的硬件资源,并尽量减小程序代 码所占用的存储空间。在d s p 指令集的设计中,通常在一条指令中指定多个并行 操作。一般一条m a c 指令中同时包含了乘法操作、加法操作和存储器取数操作 【9 】。另外,在设计时也使指令尽量短小,或者一条指令包含非常丰富且专用的 功能。通过限制特定操作使用特定寄存器以及使用模式控制位来控制指令操作, 可以有限缩短指令长度;而采用c i s c 架构指令,则能在一个时钟周期内完成由 多条i u s c 架构指令完成的任务,比如取模指令、取倒数指令。受这些因素的影 响,早期的d s p 的指令集非常专用、复杂并且不规则。这必然导致程序员使用的 汇编语言复杂程度的增大,从而导致编程及编译的困难。同时,由于高级语言( 比 如c 语言) 通常并不适合编写d s p 程序,d s p 编译器也很难将高级语言程序编译成 高效的d s p 汇编代码,因此高级语言的使用也受到了很大的限制。为了克服这些 缺陷,在当前高性能的d s p 指令集中,已经适当地减小了指令的复杂度,让单条 指令功能更加简单,这样虽然增大了代码量,但是指令集已经相对简单规整,从 而有效支持高级语言的编程,并且在一定程度上降低了编译器工作的难度。 d s p 和普通处理器在寻址模式上也存在着差异。除了使用与普通处理器相同 的一些寻址模式外,d s p 还采用了一些专门的寻址模式,其中比较具有代表性的 是环状寻址( c i r c u l a ra d d r e s s i n g ) 和比特反转寻址( b i t - r e v e r s ea d d r e s s i n g ) j 9 。环 状寻址主要用于实现数字滤波器延时线,比特反转寻址则用于f f t 算法。为了支 基于s p o c k 的软件开发工具链研究和设计 持这些寻址模式,同时提高数据地址计算速度,一般d s p 中设置了专用的地址计 算单元,而普通处理器一般没有设置单独的地址计算单元。与d s p 相比,普通处 理器的指令集的优势在于具有更简洁的结构和更大的通用性,对编译技术也提供 了较好的支持。 2 1 2 体系结构比较 d s p 和普通处理器在体系结构方面的不同,首先体现在功能单元的采用上。 为了满足d s p 算法快速实时的运算需求,d s p 除了设置和普通处理器一样的 a l u 、累加器等功能部件外,还设置了专门的乘法单元( 乘加单元) 、地址产生单 元等特有的功能单元。并且常用的功能单元会重复设置多个。同时,设置哈佛总 线结构,即分离的程序数据总线,甚至多路数据总线为这些功能单元同时提供数 据。这种设置多个功能单元和多路总线的方式,可以充分利用硬件资源,满足单 指令单周期多操作的要求,提高处理器的性能。在高性能的d s p 中,通常设置6 个以上的运算单元【9 】。 2 2s p o c k 的结构及特点 2 2 1s p o c kd s p 的硬件结构 s p o c k 是一个3 2 位指令、1 6 位数据、r i s c 结构的d s p 处理器,它支持d s p 常见的寻址模式,具备一个a l u 执行单元,一个1 6 位m a c 执行单元,和一个变 长编码解码模块v l x 执行单元,其中m a c 单元能进行4 0 位的a l u 运算1 1 0 。 s p o c k 能够用于音频处理和视频处理s o c 进行熵编解码加速,它的体系结构如 图1 所示。 浙江大学硕士学位论文 e x t e r n a li n t e r f a c e ( a m b aa i m ) p m e mt 匝md - 也m p m e mc t r l啪m c t r ld - 也mc t r l t m a d d r d m a d d r p c f s m g e n e r a t o rg e n e r a t o r a l u d 啪d 盯ir u c 妇t i o nl r e g i s t e rf i l em a c h l s ti s s u e b y p a s sl 9 9 i c v l x 图1s p o e k 的体系结构框图 2 2 2s p o c k 的主要特点 s p o c k 的主要特点包括e l1 : 支持循环缓冲、比特反转等多种寻址模式 支持两级零开销硬件循环和条件执行 支持存储器读取并行执行 具有m a c 和v l x 等多媒体处理单元 5 级流水线设计,支持操作数短路 采用三总线结构和分页式存储管理 具有a m b a 外部总线接口 s p o c k 支持地址前加( p r e i n c r e a s e ) ,地址后加( p o s t - i n c r e a s e ) ,循环缓 冲( m o d u l o ) 和比特反转( b i t r e v e r s e ) 四种寻址模式。地址前加或后加在进行存 取指令之前或之后自动改变地址寄存器的值,能加快数组索引操作、加快上下 文切换时对寄存器组的备份和恢复。s p o c k 支持两个循环缓存地址寄存器,能 定义两个以任意起点,任意长度的循环缓冲区,加速i i r 、f i r 滤波、f f t 变换 等d s p 算法。比特反转寻址方式用于加速f f t 、d c t 等蝶形变换中的地址计算。 程序中的跳转指令改变程序流向,引起处理器流水线的跳转开销。s p o c k 支 持两级硬件循环和条件执行,程序员使用这两种机制减少程序中的跳转指令, 苎王1 2 唑鲤竺竺茎茎三墨堡里壅塑堡盐 减小流水线的跳转开销。使用硬件循环指令能构造零开销的循环,程序执行到 循环体末尾时,硬件自动从循环体起始地址取下一条指令,避免跳转指令对处 理器流水线的影响。s p o c k 的大部分指令支持条件执行,这些指令的二进制编 码中包含条件域,只有当条件域中设置的条件满足时,该指令的执行结果才被 回写到寄存器组。通过在程序中使用条件执行指令,可以减少条件判断以及条 件转移指令的使用量,从而减轻跳转开销。a l u 指令生成c v n z 标志位( c :进位, v :溢出,n :结果为负,z 结果为零) ,条件码根据c v n z 标志位的值制定,条 件码与标志位的对应关系如表格1 所示。 表格1s p o c k 条件执行指令条件码 编码条件标志位的值编码条件标志位的值 0 0 0 0t u r e 0 0 0 1l a s tl a s t = 1 0 0 1 0e q z sz = 10 0 1 1n e z cz = o 0 1 0 0 n e g i n s n = 10 1 0 1p o s n cn = o 0 1 1 0o v f v sv = i0 1 1 1n o v r ev = o 1 0 0 0l tn ! = v 1 0 0 1l en ! = vo rz = i 1 0 1 0g en = v1 0 1 l g tn = va n dz = o 1 l o ol t u c sc = i1 1 0 1l e uc = lo rz = 1 1 1 1 0g e u c ce = o1 1 1 1g t uc = oa n dz = o s p o c k 支持并行存储器访问( p a r a l l e ll o a d ) ,大部分计算指令能在计算的 同时执行从数据存储器中取数据操作,用于隐藏存储操作的延迟。这些指令的 二进制编码中包含了并行l o a d 域,规定取出的数据要写入的寄存器。s p o c k 具 有两块单独的数据存储器n l 和伽,并行存储器读取支持同时从两个数据存储 器中分别读出两个数据放入s p o c k 的寄存器组中。并行指令需要预先存储在控 制寄存器中,并行指令的格式以及指令的并行l o a d 域的编码如表格2 和表格3 所示。并行l o a d 指令寄存器中高8 位配置t ml o a d ,低8 位配置嗍l o a d ,8 位配置码包含了使能、并行l o a d 所使用的地址寄存器和l o a d 完成后,地址寄 存器要加上的偏移。指令的并行l o a d 域包含4 个比特,配置了并行l o a d 的结 果要存放的寄存器索引,如果同时进行d m 和t ml o a d ,l o a d 的结果只能保存在 两个相邻的寄存器中。 表格2 并行指令格式 比特名称描述 比特名称描述 1 5t p et mp a r a l l e ll o a de n a b l e7d p ed mp a r a l l e ll o a d e n a b l e 1 4 - 1 2t a nt m p a r a l l e l l o a d6 - 4d a nd m p a r a l1 e l l o a d 浙江大学硕士学位论文 a d d r e s sr e g i s t e re n a b l e 1 1 8t s t m p a r a ll e l l o a d3 一od sd m p a r a l l e l l o a d a d d r e s sr e g i s t e rp o s ta d d r e s s r e g i s t e r i n c r e s ss i z e p o s ti n c r e s ss i z e 表格3 并行l o a d 的指令编码 指令编码中的并行功能 l o a d 域 0 0 0 0 i f ( t p e ) t m t a n + + t s 一 r o :i f ( d p e ) d m d a n + + d s 一 r 1 : 1 l l oi f ( t p e ) t m t a n + + t s 一 r e l 4 :i f ( d p e ) d m d a n + + d s 一 r 1 5 : 1 1 1 1n op a r a l l e ll o a d s p o c k 包括a l u 、m a c 和v l x 三个执行单元。a l u 支持1 6 位整型数据的加减、 移位和逻辑运算,进行数据比较和搬运。a l u 指令会改变条件标志位,这些标 志位组合成1 6 种条件,可以作为后续指令的执行条件或者转移指令的转移条 件。m a c 包含1 6 位的乘法器和4 0 位的加法器。支持1 6 位整型乘法、乘加乘 减操作,并支持3 2 位和4 0 位整型a l u 运算。s p o c k 有两个4 0 位累加寄存器, 高8 位为保护位,能连续进行2 5 6 次乘累加操作而不会溢出。对于更多次数的 迭代,程序员对计算结果进行正规化或将s p o c k 设置为饱和模式。在饱和模式 下,如果指令的计算结果超过预设范围,s p o c k 将对计算结果进行自动饱和操 作。v l x 包含4 8 比特的数据缓冲器和4 8 比特的桶形移位器。v l x 支持基于该移 位器的比特级处理,包括从数据缓冲器中存取任意比特、统计数据缓冲器中前 缀0 和前缀1 的个数等。 2 2 3s p o c k 指令集 s p o c k 指令为3 2 位,具有充足的指令空间提供了指令可扩展性。s p o c k 采 用正交编码方法,指令按照其类别进行编码,s p o c k 指令类别和每一类别所包 含的指令如表格4 所示 1 2 。a 叫指令和m a c 指令支持自动饱和操作,自动饱 和可以通过配置控制寄存器打开或关闭。 表格4s p o c k 的指令集 指令类型指令名称 a l u a l u ia d d ,s u b ,a d c ,s b c ,a v g ,a n d ,o r ,x o r ,m i n ,m a x ,l s l ,l s r ,a s l , a s r ,r o l ,r o r ,r c l ,r c r ,a b s ,c m p ,m o v m c m a c u u u s s u s s ,m a c s u b u u u s s u s s ,m p y u u u s s u s s , 基于s p o c k 的软件开发工具链研究和设计 a d d ,s u b ,i s l ,l s r ,a s l ,a s r ,c l r ,r n d ,s a t ,r n d s a t ,a b s ,n e g v l x v s y n ,v f l u s h ,v g e t ,v p u t ,v c o u n t o ,v c o u n t l l d s t l d b w d t d ms t b w d t d m b r a n c h c a l l ,b r ,r f i ,r f e o t h e r b k p t ,r e p e a t ,l o o p 由于操作数采用2 的补码编码,对于加法、减法和比较,认为操作数为有 符号数或者无符号数时,指令的执行结果相同,所以只需要一种形式的指令, 这些指令改变c v n z 标志位,标志位包括了有符号运算标志和无符号运算标志, 如c ( 进位) 是无符号运算标志,表示两个无符号数运算产生进位或借位,v ( 溢 出) 是有符号运算标志,表示两个有符号运算结果发生溢出。而对于1 4 i n ,m a x , a b s ,a v g 指令,操作数为有符号数和无符号数时,指令结果不同,分别需要两 条不同的指令,对于这四条指令,s p o c k 只提供有符号运算。m a c 单元的累加运 算也只是有符号操作,乘法的结果要经过有符号扩展后才能进行累加,累加寄 存器的溢出将引起程序结果计算错误,可以采用饱和指令或者将m a c 单元配置 成饱和模式来避免累加寄存器溢出。r f i 和r f e 是两条中断异常服务程序返回 指令,r f e 将重新执行引起中断异常的指令,r f i 从下一条指令开始执行。b k p t 是软断点指令,当执行b k p t 指令时,程序将进入调试模式。r e p e a t 和l o o p 是 两条硬件循环指令,r e p e a t 指令重复执行紧紧跟在r e p e a t 后面的那条指令若 干次,而l o o p 指令配置硬件l o o p 的起始地址和结束地址,然后执行l o o p 指令 后的循环体若干次。 2 2 4s p o c k 的流水线定义 s p e c k 采用5 级流水线,包括取指( i f ) 、译码( i d ) 、取操作数( r f ) 、执行( e x ) 、 回写( 祁) 5 个执行环节,如图2 所示。s p o c k 的大部分指令是单周期执行指令, 但是乘加乘减指令和某些寻址模式下片上存取操作需要两个时钟的执行周期, 片外存取指令需要多个执行周期完成。s p o c k 的流水线控制逻辑采取指令按序 发射、按序执行和按序回写的控制策略,当程序中出现r a w ( r e a da f t e rw r i t e ) 数据竞争和其他资源竞争时,流水线控制逻辑停止发射新指令,直至竞争消除。 s p e c k 流水线支持操作数短路( b y p a s s ) 来减少数据竞争带来的流水线停顿。 在i f 级,s p o c k 生成下条指令的地址,并将当前指令的地址锁存至指令存储器。 在i d 级,s p o c k 进行指令译码,找出当前指令的源操作数和目的操作数。r f 级 渐扛大学硕士学位论文 访问寄存器组取操作数,检查当前指令和其它正在执行指令的相关性,并发射 指令大多数指令在e x 级执行完成并将执行结果写入回写寄存器,m a c 指令以 及部分数据存取指令需要额外的e x 2 m 酬才能执行完成,将结果写入回写寄存 器。船级进行回写,回写的数据能同时短路到寄存器的输出端,从而控制通路 不需要显式生成从回写寄存器短路的控制信号。由于s p o c k 有单独的取操作数 级( r f ) ,这种隐藏的船级简化了控制通路的设计,同时不会影响处理的时序延 迟。 图2s p o c k 的流水线结构图 2 4 ss p o o k 控制通路 s p o c k 的控制通路控制取指、译码、进行指令发射,并生成流水线控制信号 和数据通路控制信号。控制通路的结构框图如图3 所示。跳转指令以及中断、 异常会改变程序流向,流水线的停顿也回影响指令地址的生成。取回的指令经 过译码后,控制通路对其进行相关性检查。除了片外存取指令,s p o c k 的指令 都能在一或两个时钟完成,s p o c k 使用两个条目f i f o 保存当前正在执行的指令 的信息,这些信息包括指令的目的寄存器索引、指令的回写条件等信息。s p o c k 基于s p o o k 的软件开发工具链研究和设计 按照程序顺序执行指令,当前指令和正在执行的指令没有相关性( 包括数据相关 性和指令结果回写产生的寄存器写回相关性) 时,控制通路将指令发射给执行单 元。 c o n t r o lp a t h 图3s p o c k 控制通路结构框图 为了减少数据相关性带来的性能损失,s p o c k 支持操作数短路 ( b y p a s s f o r w a r d ) ,不能短路解决的操作数竞争或者结构竞争将使流水线停顿。 当数据通路执行完指令后,指令的执行结果被写入回写寄存器,控制通路生成 回写使能信号并解析指令的回写条件,当回写条件不满足时,指令的执行结果 被丢掉,当回写条件满足,执行结果被写入寄存器组。 2 2 6s p o c k 数据通路 s p o c k 的数据通路包括a l u ,v l x 和m a c 单元。a l u 支持1 6 位整型数据的加 减、移位和逻辑运算,进行数据比较和搬运,并生成a l u 标志位。m a c 包含1 6 位的乘法器和4 0 位的加法器,支持1 6 位整型乘法、乘加乘减操作,并支持 3 2 位和4 0 位整型a l u 运算。v l x 包含4 8 比特的数据缓冲器和4 8 比特的桶形移 位器,v l x 支持基于该移位器的比特级处理,进行数据流处理以及对多媒体压 缩算法中的熵编解码进行加速。 删模块 s p o c ka l u 包括a u 、s u 和l u 三个子模块分别完成算术、移位和比较指令。 a u 单元完成1 6 位加法、减法、绝对值、最大最小平均操作,操作数r s 来自 寄存器组或者立即数,r t 来自寄存器组。a u 采用了一个1 8 位加法器,加法器 的两个操作数的最低比特位同时连接c 比特位实现a d c ,s b c 等包含c 比特位的 浙江大学硕士学位论文 指令。为了完成a v g 指令,操作数的符号扩展一位,增加了一个g u a r d 位避免 a v g 指令计算时发生溢出 s u 模块实现了s p o c k 指令集中的逻辑、算术和循环移位操作。指令中指定 了移动的方向,通过将输入操作数顺序颠倒,左移操作可以用右移操作实现。 所有s u 指令都更新z 和n 标志,算术移位指令当符号位发生变化时更新v 标志, 而循环移位指令更新c 标志。 v l x 模块 v l x 完成变长编解码指令 1 3 。v l x 从控制通路获得输入数据,对数据进 行对齐、移位、统计l e a d i n g0 i 的个数等操作后,将结果传递回控制通路。 v l x 操作是比特级串行的,每次操作需要o - 1 6 个比特输入操作数,为保证连续 操作不会因为操作数不够而出现延迟,v l x 数据通路中有由3 个1 6 比特寄存器 组成的循环缓冲f i f o 对操作数进行缓冲。在解码时,f i f o 中存放操作数,当 有f i f o 项为空时,即向f i f o 中填充操作数;在编码时,f i f o 中存放了操作结 果,当有f i f o 项不为空时,即向外输出结果。 姒c 模块 m a c 模块完成s p o c k 的乘法、乘加、3 2 位a l u 运算、以及累加寄存器操作 指令。除了乘加指令外,其他指令在一个时钟内完成,而m a c 指令具有两个时 钟的延迟。m a c 中包含一个1 7 x 1 7 的乘法器,一个3 2 位的移位器和一个4 0 比 特加法器。m a c 支持1 6 位有符号乘法、无符号乘法以及有符号乘无符号加法, 并支持定点小数模式。在该模式下,m a c 将乘法运算的操作数看成小数,即操 作数的小数点在操作数的第1 5 位( 符号位) 右边,当乘法计算完成后,因为结果 具有两个符号位,需要对乘法结果左移1 位。小数运算避免多次连续乘法发生 结果溢出,但不能避免加法运算发生溢出。 存储管理和外部接口 s p o c k 总线结构采用一条指令总线和两条数据总线的三总线结构,如图4 所 示。p c ( 程序计数器) 控制逻辑生成下一条指令的地址,取指逻辑以该地址为索 引,通过指令总线从程序存储器取指令。s p o c k 包括t - m e m 和d - m e m 两个独立 的数据存储器,地址发生器a g e n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论