(计算机应用技术专业论文)适用于soc系统级设计的处理器指令集仿真技术的初步研究.pdf_第1页
(计算机应用技术专业论文)适用于soc系统级设计的处理器指令集仿真技术的初步研究.pdf_第2页
(计算机应用技术专业论文)适用于soc系统级设计的处理器指令集仿真技术的初步研究.pdf_第3页
(计算机应用技术专业论文)适用于soc系统级设计的处理器指令集仿真技术的初步研究.pdf_第4页
(计算机应用技术专业论文)适用于soc系统级设计的处理器指令集仿真技术的初步研究.pdf_第5页
已阅读5页,还剩46页未读 继续免费阅读

(计算机应用技术专业论文)适用于soc系统级设计的处理器指令集仿真技术的初步研究.pdf.pdf 免费下载

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

文档简介

华北电力大学 ( 北京)硕士学位论文 摘要 超大规模集成电路的发展最终促使在一块芯片上实现一个系统成为现 实,这种技术被称为 s o c即片上系统。s o c的出现对设计方法也提 出了更高 要求。这主要包括设计软件和设计方法的研究和提高, 使设计工程师在设计 阶段就能正确地仿真出电路系统的全部功能和真实性能指标 。 本文介绍了基于s o c 系统级设计的a r m 指令集仿真器的设计过程, 从中 分析了设计 i s s 所遇到的问 题,以及如何解决等内 容。 关键字:s o c , i s s ,系统级设计 a b s t r a c t w i t h t h e d e v e l o p m e n t o f i n t e g r a t e c i r c u i t , i t b e c a m e t r u e t o b u i l d a w h o l e s y s t e m o n a c h i p w h i c h c a l l e d s y s t e m 4 n a c h i p . t h i s t e c h n o l o g y n e e d s a m o r e a d v a n c e d m e t h o d f o r d e s i g n . t h e d e s i g n s o f t w a r e a n d m e t h o d n e e d t o b e s t u d i e d a n d i m p r o v e d s o t h a t d e s i g n e r c a n s i m u l a t e t h e w h o l e f u n c t i o n o f t h e s y s t e m c o r r e c t l y a n d g e t i t s p e r f o r m a n c e i n d e x i n t h i s p a p e r , i t i n t r o d u c e d a p r o c e s s t h a t d e s i g n a i n s t r u c t s e t s i m u l a t o r ( i s s ) f o r a r m w h i c h o n t h e b a s i s o f s y s t e m - l e v e l - d e s i g n f o r s o c , a n d i t a l s o a n a l y z e d w h a t t h e p r o b l e m s i s o n h o w t o d e s i g n a i s s , a n d h o w t o res o l ve it . c a o x i a o l o n g ( c o m p u t e r a p p l i c a t i o n a n d t e c h n o l o g y ) di r e c t e d b y p r o f . s h a o z u o z h i k e y wor ds : s o c , i s s , s y s t e m- l e v e l de s i g n 华北电力大学 ( 北京)硕士学位论文 第一章绪论 课 题的背景和意义 目前,随着多媒体、网 络化、移动化的发展,过去利用印 刷板技术和 i c ( 集成 电 路) 芯片来实现的系统, 由于芯片之间延迟过长、电压较高、 体积较大等因素, 使 其无法满足市场对整机越来越高的性能要求。正是在市场需求和集成电路技术发展 的双重作用下,出现了将整个电子系统集成在单个芯片上的技术,即片上系统 ( s y s t e m o n a c h i p简称 s o c ) o 5 虽然 s o c 一词多年前就己出现, 但到 底什么是 s o c 则有各种不同的 说法。 在 经过了多年的争论后,专家们就s o c 的定义达成了一致意见。这个定 义虽然不是非常 严格,但明确地表明了s o c 的特征: 实现复杂系统功能的v l s i ; 采用超深亚微米工艺技术; 使用一个以上嵌入式 c p u / 数字信号处理器( d s p ) ; 外部可以对芯片进行编程; 主要采用第三方 i p 进行设计; 现在的 s o c能够在单一的硅芯片上集成存储器、信号采集和转换 电路 、mc u. mp u . d s p 等模拟与数字信号电路,从而构成一个完整的系统。s o c直接实现的系 统具有集成度提高、体积减小、功耗降低。成本下降等优点,因此被广泛应用于计 算机、通信、消费类 电子产品、工业、军事等许多领域。 然而 ,s o c革命的胜利者之所以获胜是因为他们己经采用系统级设计工具和方 法。领先的设计厂商正在采用这些方法,因为传统方法不能使设计生产率得到数量级 的增长,从而无法满足现代 s o c设计挑战的要求。传统的硬件系统设计多采用自下 至上的方法:首先根据系统对硬件的要求,合理划分功能模块;然后进行各子电路和 系统设计、调试;最后当电路设计完成后,再根据工艺线的具体工艺条件进行物理设 计、制作掩模板及制造芯片。采用自 下至上的设计方法,整个系统的功能验证只能在 所有底层模块设计完成后进行,如果系统功能不符合设计要求,就有可能对所有的功 能模块进行重新设计,使得设计时间延长。 随着深亚微米技术的不断发展, 芯片的规模逐渐扩大,芯片内的线路也越来越复 杂。目前的超大规模集成电路,特别是片上系统,采用传统的硬件设计方法根本无法 完 成其功能设计。因 此 ! c设计者必须在先进的e d a ( 电子设计自 动化) 开发工具的基 础上,采用 自上至下、结构化的设计、设计再利用和软硬件协 同设计的方法来完成 s o c的系统功能设计。 华北电力大学 ( 北京)硕士学位论文 在s o c设计中,功能组装正在逐渐代替功能设计, 而成为主流设计方法。 传统 的设计方法中,无论是硬件描述语言还是原理图设计, 重点都在于设计新的电 路设 计 来实 现系统功能。 但是渐渐地,集成电路包含了各种i p模块( 微处理器、d s p 、存储 器 等等) , 对于这种电 路工程师们关心的焦点是: 应该选择哪些功能模块、 功能模块如 何使用、 如何进行软硬件的功能划分、 如何进行模块互连、如何进行系统功能验证等 等。 比较起来 , 以功能组装或以复用技术为基础的方法更能适应这种关注焦点的转移, 从而满足 s o c设计的需要。 此外,s o c 设计概念的出现, 在给系统设计带来众多优点的同时,其设计复杂性 也使得电 子系统设计将面临新的挑战,这主要表现在以下几个方面: . 来自 设计目 标方面的挑战。主要是指在s o c 设计中,整个系统中各个部件都 有 自己的设计目标。如:数字电路部分关心速度指标,存储器设计注重设计密度 以期 获得更大容量, 混合信号电 路则重点 考虑兼容性问 题, 而模拟电 路设计追求设计精度, 工 / 0 部分更多考虑信号灵敏度、电路尺寸和功耗等。因此,如何在s o c 设计中考虑这 多个设计目标的协调统一将成为一个重要的问题。 . 系统集成方面的挑战,主要涉及基于平台、基于核 ( c o r e ) 、基于综合等三种 不同的系统集成技术。 . 设计复杂度方面的挑战, 主要包括部件复用技术、知识产权( i p ) 模块等。 s o c 设计 概念的出现引出了新的电子系统设计方法一i p 模块技术。 可以设想, 若对于结构 十分复杂的s o c 系统从零起点开始设计, 则其设计正确性、 可靠性以 及设计周期等都 将很难保证,甚至结果不可预料。因 此, 最好能基于已有的他人成熟的功能模块, 在 其上根据自己的不同系统功能需要将这些模块进行继承、复用和上层开发,以实现 自 己的 设计目 标。这种方法思路就是i p 模块和部件复用技术。 . 软/ 硬件协同设计。 这也是新出现的设计方法, 主要包括s o c 系统软/ 硬件划分 方法,系统方案说明、系统功能分析、设计、模拟等的协同技术,接 口综合技术等内 容。 . 模拟与混合信号电路系统设计,重点考虑 a / d , d / a的转换问题。 . 片内 通信技术,重点考虑如何克服互连线的信号传输瓶颈与传输质量等电性 能问题。 . 系统级描述语言的挑战。对于 s o c设计,目前采用的 h d l 硬件描述技术其功 能还不够全面,需要确定 c语言是否是更佳选择。 . 系统测试与验证技术。 s o c 设计不仅要解决由于系统复杂性高、 性能优化目 标 多、系统规模庞大等因素给系统测试与验证带来的困难,同时要解决软/ 硬协同测试 与 验证的新问题。目 前, 测试与验证的成本已 经占到集成电路总成本的5 0 % 0 华北电力大学 ( 北京)硕士学位论文 总的来说, 如果设计人员想要利用s o c 设计的优点, 就必须把注意的焦点转向 前 期设计阶段,并时刻 留心工具和 i p市场的快速发展。通过使用专用的系统集成平台, 工程师可以减少对工具的 依赖, 也不必对 i p 模块进行大量的 修改; 但这些平台尚处 于刚刚出现的阶段,还需要经过长时间的发展才能在 s o c 设计中得到高效使用。 2 国内外发展动态 s o c芯片的发展: 目前国外一些公司正在加紧开发系统级芯片, 如d i g i t a l 公司正在开发把内存, l c d和 i / 0控制器集成到 s t r o n g a r m处理器中,将用于便携机和网络计算机: n s / c y r i x 正在开发x 8 6 芯片上综合多种功能的s o c ; x i e o r 公司 1 9 9 7 年末推出一种 集e e p r o m , 逻辑和模拟功能的系统控制器, 用于多处理器系统, 容错系统,电 信和 数据通信设备以及电 缆系统机顶盒等领域,正在开发的项目 有单片照相机电路,单 片电视机电路盒单片多媒体计算机电路等;n a t i o n a l s e m c o n d u c t o r公司开发的 g e o d e s c 1 4 0 0 将视频和主要的 p c 功能集成在一个芯片中, 用于交互式机顶盒, 可以 提供丰富的网络浏览功能和先进 的数字视频功能。 另外,日 本 n e c 公司正在开发利用 0 . 1 8 u m c m o s 在 1 5 m m * 1 5 m m 芯片上集成 2 . 5 亿个晶体管的数字电 视系统单片接收机及用0 . 1 u m c m 0 s 工艺在 l o m m * 1 o m m 芯片面积 上集成2 0 亿个晶体管的具有高性能和多媒体功能的计算机。 中国电子信息产业一直保持 2 0 % 以上的增长率,主要集中在移动通信设备、数 据通信设备、计算机及消费产品领域。中国是世界上最大的消费类电 子产品的生产 国,其中电 视机、收录机、电话机、电子手表等产品已占世界第一;手机、软硬驱 动器、显示器、计算机板卡等也是世界的主要生产基地。市场的需求决定着需要开 发的 s o c , 考虑到我国电子信息市场的特殊性,即巨大的移动通信和数字家电市场 的核心芯片主要依赖于进 口的状况 ,开发数字家电类 s o c己经为国内各大 i c设计 机构、公司所看好,纷纷投入人力、 物力进行这两个方面 s o c的研发工作。 国内移动通信类 s o c 的开发主要集中在华为、中兴、大唐等通信公司,数字家 电类s o c 的开发主要集中在海尔、华大、华虹等设计公司。 目 前,海尔开发出的可产品化的 h m d 2 0 0 2 芯片集传统 m p e g - 2芯片组于一身, 含有下列成分:m p u . o s d处理器、解扰器、解复用器、m p e g - 2视频解码器、音频 解码器( m u s i c a m或 d o l b y d i g i t a l ) 和 p a l / n t s c / s e c a m 数字编码器,主要完成 d v b 解扰、m p e g - 2解复用、 m p e g - 2解压缩、 音视频信号恢复和模拟音视频信号合成编 码等信源解码工作。随着进一步研发,将来海尔数字电视 s o c芯片将把信道解码部 分也包含进去,真正成为数字电视的单芯片解决方案 。 s o c 确实有着巨大的市场潜力,但关键的制约因素是有效的设计工具。 华北电力大学 ( 北京)硕士学位论文 s o c设计工具的发展 目 前 许 多e d a 供 应 商 都开 发了 适 合于s o c 设 计 的 工 具: 如e x c a l ib u r d e v e l o p m e n t k it s 是由 美国a l t e r公司提供的一款s o c开 发工具 套件。因为性能比 较全面, 故适用 于数字s o c的开发。该开发套件包括 s o c开发 所必需的各种工具和资源软件、 可以重 构的硬件电 路结构验证平台和使用说明书, s y n o p s i s 公司的c o c e n t r i c 系列提供了 复杂 系统的关键元件模块的 并发设计、 验证、 细化和实现的设计工具和设计方法, 这些模块 可 以包 含硬件模 块和软件 模块 。c a d e n c e 公 司 的 系 统 级 设 计 工 具 有 v i r t u a l c o m p o n e n t c o - d e s i g n 和s i g n a l p r o c e s s i n g w o r k s y s t e m , 它们是基于平台的 设计工具, 提供了 对系统级设 计的定义、 分析和优化能力。m e n t o r g r a p h i c s公司的 s e a m l e s s 是一 个软硬件协同验证工具。 它 有一个 协同仿真核心, 用于控制硬件仿真部分 与软件仿真部分之间的通讯。 s e a m l e s s 具有一个较大的 c p u 和 d s p 库, 包含多种类型的 c p u 模型、 d s p 模型和总线模型。它具有指令集仿真器,用于仿真c p u 软件的运行过程。 图 形化的 调试界面使得对协同验证的 控制 过程更为方便。 s e a m l e s s 可与许多 硬件和软件 仿真产品相连接,进行协同验证。 c * s o c 是国芯公司c d k ( c h i n a c o r e d e v e l o p m e n t k i t ) 技术转让包的重要组成部 分。 c * s o c 是以3 2 位r i s c处理器 c * c o r e ( c 2 1 0和c 3 1 0 )为核心的s o c 芯片设计平 台。 应用c * s o c 2 0 0 平台,s o c设计者可以更加专注于开发高附加值的面向 应用的i p 模块。c * s o c 2 0 0不仅能 够快速建立 s o c工程,还提供一个灵活、开放的验证环境, 降 低验证工作量。 另外, 全国首家系统级芯片设计平台历经 3 年的时间终于在哈工大 微电子中心搭建成功, 并于5 月中旬参与完成世界第一块3 2 位5 6 9 8 处理器芯片成功研 制。它是 目前国内最先进的系统级芯片设计平台。 3 课题研究的主要 内 容及其意义 为了研究 s o c设计技术的相关内容在本课题中建立一个可以进行 s o c系统级设 计的支撑环境,该环境包括了一个嵌入式 c p u ( a r m ) 的指令集仿真器( i n s t r u c t s e t s i m u l a t o r -i s s ) 、 调试器( g n u g d b ) 、 编译i具( g n u a r m - e l o 。 课题的主要任务是为该 支撑环境提供a r m 7 的i s s 。整个支撑环境运行在 l i n u x 操作系统下。其实现意义主 要体现在: i 研究设计一个可以 进行系统级设计的i s s 所遇到的问 题并提出解决的方法。 在 一个可以进行 s o c系统级设计的 环境中 应该包括多个不同嵌入式c p u的 指令集仿真 器,因 此, 以某个c p u为原型设计其i s s , 并在实际的经验中总结出设计适合系统级 设计的 i s s的一般性问题对于将来设计其他 c p u的同类 i s s有指导意义。 2搭建一个可以进行 s o c系统级设计的环境为将来的 s o c 设计打下基础,s o c 设计是一项正在发展中的技术, 因此还存在许多问 题有待解决。 本文介绍的s o c 设计 华北电力大学 ( 北京)硕士学位论文 环境只是一个基础, 其实现目标是能够在环境中进行 s o c系统级设计, 但是在这样的 一 个基础上可以进一步研究s o c 设计技术存在的相关问 题并找到合适的解决方法。 3除了上述的理论方面的意义外, 还可以 通过该支持环境设计基于a r m的片上 系统开发,因此它又有工程上的意义。 为了满足 s o c设计不同阶段的要求,课题实现的 i s s分为指令精确( i n s t r u c t a c c u r a t e -i a ) 和周 期 精确 ( c y c le a c c u ra te - c a ) 的 两种 .。 ( 所 谓 指令 精 确模 型 是指 给出 系 统 状态的确切行为,而不考虑处理器的精确时序特性,为此可 以设计以提高运行速度为 目 标的 i s s ,这样运行速度较快,适合于在设计的初期确定系统的结构和功能阶段. 而周期精确模型则是指逐个周期地给出处理器的确切行为,能准确给出程序所需的时 钟周期数。 但是其运行速度较慢。) 其中 每一类 i s s 又有独立运行和与s y s t e m c集成 两种使用方式,实际上,i s s 可以用s y s t e m c 来实现, 但是考虑到目 前大多数 i s s 都 是由c p u开发商 提供的,一般是以c语言的形式实现的,当用户需要把这些 i s s 集 成到 s y s t e m c中进行开发时需要做大量的工作,甚至可能会重新编写整个i s s 。因此 在本文中实现了能够与s y s t e m c集成的i s s ,以此作为基础研究与s y s t e m c进行集成 的i s s 所要解决的相关问 题。( 对于s y s t e m c在下面有专门的一节对其进行介绍。 ) 本 文主要涉及到两个方面的内容: 1 、编写i s s 所要解决的 相关问 题及其可行的解决方法。 2 、介绍i s s 的实现。 总之, 本文所有的内容都是围绕着怎样设计实现 a r m 7的指令集仿真器而展开的。 华北电力大学 ( 北京)硕士学位论文 第二章a r m 与 s y s t e m c的介绍 课题 研究 的支撑环境是基 于 a r m 进行开发 的,同时用到 了硬件描述语 言 s y s t e m c ,因此这一章里简单的对 a r m和 s y s t e m c 做一介绍。 2 . 1 a r m介绍 s a r m即a d v a n c e d r i s c ma c h i n e s 的 缩写。 1 9 8 5 年 4 月2 6 日, 第一 个a r m原型在英国 剑桥的 a c o rn 计算机有限 公司诞生,由 美 国加州s a n j o s e v l s l 技术公司制造。 2 0 世纪8 0 年代后期, a r m 很快开发成a c o m 的台式机产品, 形成英国的计算机教育 基础。 1 9 9 0 年成立了a d v a n c e d r i s c m a n c h n e s l i m i t e d ( 后来称为a r m l i m i t e d , a r m 公司) 。 2 0 世纪9 0 年代, a r m 3 2 位嵌入式r i s c ( r e d u c e d i n s t r u c t i o n s e t c o m p u t e r ) 处理器 扩展到世界范围。a r m 公司使用通用的基础体系结构,以 极低的 成本和功耗提供了高性 能 多系列的3 2 位r s i c 处理器核。 a r m 处理器在耗电, 数据传送, 数据处理速度以 及带 d s p 功能等方面业界领先,很快成为移动通信,手持计算,多媒体数字消费和嵌入式解 决市场的 r s i c 标 准。 a r m 公司是设计公司, 是知识 产权u p ) 供应商, 本身不 产生芯片, 靠转让设计许可 由 合作伙伴来生 产各具特色的 芯片。作为3 2 位嵌入式r s i c 微处理器业界的供应商, a r m 公司商业模式的强大之处在于它在世界范围有超过1 0 0 个的 合作伙伴一一 包括半导体工 业的著名公司, 从而导致了大 量的开发工具和丰富的 第三方资源, 它们共同保证了 基于 a r m 处理器核的设 计可以 很快投入 市场。 a r m 处理器的 3 大特点如 下: 小体积,低功耗,成本低,高性能; 1 6 位/ 3 2 位双指令集; 全球众多的 合作伙伴; a r m 处理器的出 色性能 使系统设计者可得到完全满足其确切要求的 解决方案。借助 于来自 第三方开发者广泛的 支持,设计者可以 使用丰富的 标准开发工具和a r m 优化的应 用软件。 当前a r m 体系结构的扩充包括:t h u m b : 1 6 位指令集,用以改善代码密度: d s p :用于d s p 应用的 算术运算指令集; j a z e l l e r :允许直接执行j a v a 字节码的扩充。 a r m 处理器系列提供的解决方案包括: 在无线,消费电子和图像应用方面的开放平台; 华北电力大学 ( 北京)硕士学位论文 存储,自 动化,工业和网络应用的嵌入式实时系统; 智能卡和s i m 卡的安全应用。 2 . 2 s y s t e m c 介绍1 l 随看半导体技术的迅猛发展,s o c已经成为当今集成 电路设计的发展方向。在 系统芯片的各个设计中,像系统定义、软硬件划分、设计实现等,集成 电路设计界 一直在考虑如何满足 s o c 的设计要求,一直在寻找一种能同时实现较高层次的软件 和硬件描述 的系统级设计语言。 s y s t e m c 正是在这种情况下,由s y n o p s y s 公司和c o w a r e 公司积极响应目前各 方对系统级设计语言的需求而合作开发的。1 9 9 9 年9 月2 7 日,4 0 多家世界著名的 e d a 公司、 i p公司、 半导体公司和嵌入式软件公司宣布成立“ 开放式 s y s t e m c联盟” 著名公司c a d e n c e 也于 2 0 0 1 年加入了s y s t e m c 联盟。s y s t e m c 从 1 9 9 9 年9 月联盟 建立初期的 0 . 9 版本开始更新,从 1 . 0 版到 1 . 1 版,一直到2 0 0 1 年 1 0 月推出了最 新的2 . 0 版。 所有的 s y s t e m c 都是基于c + + 的;图1 中的上层构架都是很明确地建立在下层 的 基础上;s y s t e m c内核提供一个用于系统体系结构、并行、通信和同步时钟描述 的模块;完全支持内核描绘以外的数据类型、 用户定义数据类型; 通常的通信方式 , 如信号、f i f o , 都可以在内核的基础上建立,经常使用的计算模块也可以在内 核基 础上建立 ;如果需要,图 i 中较低层的内容不依赖上层就可 以直接使用 。 实际使用中,s y s t e m c由一组描述类库和一个包含仿真核的库组成。在用户的 描述程序中,必须包括相应的类库,可以通过通常的a n s i c + + 编译器编译该程序。 s y s t e m c提供了 软件、硬件和系统模块。用户可以在不同的层次上自由选择,建立 自己的系统模型 ,进行仿真 、优化、验证、综合等等。 图 1 s y s t e m c体系结构 在上图中 可以看出s y s t e m c 中有这样几个基本要素: 进程, 信号, 接口, 模块, 7 华北电力大学 ( 北京)硕士学位论文 事 件,通道等。这些要素是描述硬件系统以及仿真运行必不可少的。我们知道实际 的硬件系统中各个组成模块是通过引脚和连线进行相互间的信息传递的,并且各个 模块在时钟的控制下进行操作,且具有并发的特征,因此每一种硬件描述语言都需 要对这些硬件特征提供语法支持,只有这样才能描述硬件。在 s y s t e m c 中,硬件模 块的引脚是通过端口 类对象来进行描述的,而连线则用到了信号类,进程则是用来 描述硬件模块的并发性的结构。利用 s y s t e m c 描述硬件系统的过程如下: 1 定义模块结构,利用s y s t e m c 的模块类来描述一个模块; 2 定义引脚, 利用端口类定义特定模块的引脚, 例如时钟引脚, 数据引脚等。 3 定义进程, 模块的功能描述主要是通过进程来实现, 在 s y s t e m c中进程具 有并发性。例如可以把一个c p u 的执行过程用一个进程来描述,还需要说明的是进 程的执行需要一定的触发条件,如可 以通过引脚值的改变来触发进程。 4 通过上面的三个步骤基本上完成了对一个硬件模块的描述,接下来需要实 例化模块,模块实际上是一个类,实例化的过程在 s y s t e m c 的主函数中进行,在主 函数中需要定义一些信号对象 ,这些信号对象用于连接系统中各个模块的引脚,接 着创建各个模块的对象,把对象中对应的引脚与前面定义的信号对象相连接,信号 对象和引脚都有数据类型, 例如可以 在程序中定义整型,布尔型等数据类型的信号 或引脚对象。只有相同数据类型的引脚和信号才能进行连接。 通过上面的四个步骤就可以完成一个系统的设计, 后面的工作就是仿真运行和 验证整个系统的正确性。 华北电力大学 ( 北京)硕士学位论文 第三章 设计 a r m i s s的若干问题及其解决方法 在这一章中主要讨论了编写 工 s s 所要解决的相关问题,主要包括以下内容: 1 , i s s 本身以何种形式实现。 2 , i s s 要与s y s t e m c 集成首先得解决两者之间的连接问 题,由 于 i s s 是用纯c + + 的 代码实现的而s y s t e m c 语言尽管是 c + + 的一个类, 但是为了 作为一种新的硬件描述 语言它又有能够描述硬件的一些特征,因此需要解决两者之间的连接。 3 、除了与 s y s t e m c集成外,还可以 通过支撑环境设计独立运行的系统,即不是 特定于某类语言而设定的结构。 设计独立运行的i s s 主要是为了把问题一般化, 在独 立运行的系统中已不能 利用s y s t e m c 的内 部仿真机制来对系统进行仿真验证, 为此需 要解决独立运行方式下的仿真运行的相关问题。 4 、本课题实现的 a r m 7核是一个具有三级流水线结构的处理器核,因此在实现 c a 的i s s 时需要解决流水线结构上的相关问 题。 5 , i s s自 身不能单独运行, 它不是一个可运行的程序需要被外部的主程序调度 方可运行, 因此需要解决工 s s 调度的问 题。 另外, 还需要解决多周期指令执行的问题, 这里所说的多周期指令在本文中均表示进入执行段的指令需要多个周期方能完成。例 如访存指令等。因此本文中提到多周期指令时, 指的即是上面所说的概念。 6 、 支撑环境中包含了g n u 的g d b 调试器, 为了能 够在设计中调试一个编译成a r m 指令集的可执行文件需要 i s s定义能够支持调试器调试功能的结构。文中将结合几个 主要的常用的调试命令介绍i s s 是如何支持这些调试命令的。 7 , i s s要能支持中断处理也需要解决一些实现结构上的问题。 3 . 1 i s s 的实现方式 一个能够进行 s o c 系统级设计的环境同时也是一种应用软件, 它与其他应用软 件一样应尽量使设计简单, 在设计中,用户只需编程把环境中提供的各个 c / c + + 模 块或者用户自 行设计的除核以外的模块( 这些模块需要按照一定的规则实现即可) 进行连接操作即可完成系统的设计工作,并在程序中调用提供的a p i 函数即可仿真 运行整个系统。在连接的过程中,用户把代表物理上的引脚的变量进行相互间的连 接,这一过程模拟了实际电 路设计中的连线操作。这些模块代表物理硬件中的各个 电路块。 为了能够实现上述的目 标需要考虑 工 s s的实现形式,本文考虑用库的概念来实现 工 s s , 首先 工 s s 在支撑环境中 表现为一个c + + 模块, 用库来实现比 较能 够体现模块的独立 性。 采用库来实现其优越性在于当 支撑环境中其他部分发生变化后, 只要工 s s 的 接口部 分不便,则不需要改写 工 s s 。 库又进一步分为静态库和动态库两种形式,在下面会对这 华北电力大学 ( 北京)硕士学位论文 两种库进行介绍,并说明课题中 工 s s 实现的形式。 3 . 1 . 1动态库 动态库的概念: 动态库是在程序的运行过程中动态装载的, 其好处在于当程序 中的 其他部分发生变化而库本身没有变化,且其接口 不变的情况下能够减少编译时 间。因为,此时编译将不对动态库进行重新编译。对于大型应用程序可以大大减少 编译时间,反之,如果程序没有发生变化而动态库进行了修改,则只需要重新编译 动态库即可。当动态库较大时同样也可减少编译时间。但是动态库中的许多内容在 运行前都是不确定的,它要在程序的运行过程中动态地确定。 动态库使用: 为了能使库以外的程序能够调用库里的函数,动态库必须定义导 出函数,使用动态库的 程序或函数需要在自己内部定义与该导出函数原型相同的函 数指针,并在程序中通过调用接口函数获得库里函数的 位置,而后再通过指针调用 函数。在动态库中只能直接定位函数而不能定位变量。 例如在l i n u x 下定义动态库的导出函数与定义普通函数一样, 唯一不同在于定 义前面加上 e x e t e r n c ”说明符即可 ,然后在调用之前用下面的两个函数 实现: d l o p e n用于打开库 ,返回值为 v o i d * 类型: d l s y m用于定位库里的函数,返回时需要把类型强制转换为定义 的函数指针类型即可。而在 w i n d o w s 下操作类似,不过在动态库内部定义导出函数 时需要加上: e x t e r n c _ d e c l s p e c ( d l i e x p o r t ) 说明 符。同 样在调 用之 前需 要使用 函 数 来分别打开库和定位函数: : : l o a d l i b r a r y ( 库的路径) ; ( 转化为函数指针的类型) : : g e t p r o c a d d r e s s ( 库 的指针 ,“ 函数名”) ; 3 . 1 . 2静态库 静态库的定义: 静态库是在程序编译的过程中被装载到程序中的,因此在程序 执行之前其 内容己经作为程序的一部分而存在。 静态库的使用:静态库无需定义导出函数,因为静态库在编译时就己经被链接 到了程序中与程序结合在一起成为一个程序 ,外部程序对库里函数的可 以直接调 用,外部只需将库的头文件包含到程序或函数中即可 ,动态库没有头文件可共程序 使用。主程序可 以使用静态库中的变量。且其实现比较简单。 华北电力大学 ( 北京)硕士学位论文 3 . 1 . 3实现方案 动态库和静态库各有优缺点, 但是在本文中 采用了 静态库的实现方式, 这主要是 因为: 1 在与 s y s t e m c集成的过程中不能使用动态库, 与 s y s t e m c集成时需要利用 s y s t e m c 的语法结构实现一个模块, 模块的作用是把 工 s s 封装 起来并提供对外的 “ 引 脚” ,且模块在封装 i s s后本身又作为一个动态库的形式提交。在程序使用到这个封 装后的i s s 时, 它只能定位其中的函数, 而不能在主程序中创建这个封装模块的对象。 为 此在主程序使用封装后的i s s 之前,该模块对象就己 经存在了, 但是在s y s t e m c 中 有一个仿真内核对象,它管理 s y s t e m c内部所有的进程对象,模块对象等,是整个 s y s 七 e m c仿真运行的核心。 该对象在设计中的 第一个模块对象创建时自 动的 被创建, 仿真运行的整个过程中只能有一个仿真 内核对象,因此当程序中的其他模块对象在创 建时将首先判断当前是否已 经存在一个仿真内核 对象, 如果存在则调用s y s t e m c 中提 供的接口函数获取这个仿真对象并赋给模块自身的指针。 因此在动态库中创建一个模 块对象时会自 动的创建一个仿真内核对象, 而由于动态库的 独立性在主程序中 创建第 一个模块对象时又会创建另一个仿真内核对象。此时会存在两个仿真内核对象,动态 库的内核对象管理着封装模块中的 进程等对象, 而主程序中的内核对象管理 着当 前主 程序中的所有相关对象, 其中 包括所有的模块的进程对象等。 这样根本无法使程序正 常运行。因此动态库不能用在与s y s t e m c 集成时, 把封装模块也以 动态库形式实现的 情况下。 2尽管在独立运行的方式下,i s s完全可以用动态库来实现,但是为了使环境中 的 i s s 的实现方式一致,本文的 i s s 均以静杰库的形式卖现。 3 . 2 i s s 与 s y s t e m c 连接的问 题 根据设计不同阶段的要求平台中的 工 s s在独立和集成方式下都有两种精度不同 的i s s 一指令精确和周期精确。 在集成方式下 i s s 被封装到以s y s t e m c 语法实现的模 块中, 该模块就像一个外壳, 它向外部提供了 一系列引 脚, 通过这些引脚把工 s s 内部 的 数据, 地址和控制等信息传递给外部或从外部接收信息。 但是对这些数据等信息的 处理和控制则是由工 s s 来完成而不是封装模块。 这里封装模块只是起到一个 媒介的作 用,然而 i s s 是以 纯 c + + 的代码实现的, 在 c + + 中没有 s y s t e m c 所提供的引 脚等数据 类型,因此需要寻求一种方式来实现两者的互连 。 在s y s t e m c 中,引脚、 信号等类在定义时可以指定其数据类型, 例如可以定义一 个布尔型或者整型等的信号或引脚对象,此外还可以直接对其赋值就像使用普通变量 一样,可以与相同数据类型的普通变量进行赋值等操作 , 不同之处在于一旦向普通变 i i 华北电力大学 ( 北京)硕士学位论文 量赋值,变量的值立即变化而信号等类型则不然,其值的更新要在 s y s t e m c仿真内核 的控制下进行。既然能够把一个普通变量的值附给一个数据类型相同的信号引脚变 量,那么可以设想一种方法能够把 i s s内部的变量赋值给引脚,这里可 以有两种实现 方式:一种在 s y s t e m c内定义各引脚的同时定义与之相关的普通 c + + 变量,与此同时 在i s s 内部把所有的引脚都定义为对应类型的指针, 并提供指针初始化函数, 这样在 封装i s s 的s y s t e m c 模块内 部用定义的普通变量的地址作为参数调用该初始化函数, 这样做可以 使 工 s s 直接操作s y s t e m c 的变量, 而且在s y s t e m c 中提供一个函数其作用 为在每个时钟周期把变量的值赋给端口变量或者反之从端口 赋值给变量。 另一种方式 是直接把 工 s s内部的变量赋值给端口变量或者把端口变量的值赋给变量 。 3 . 3 独立运行时信号问题 实际的硬件中所有系统中的模块都是在同一个时钟的控制下操作的, 因此为了 更为准确地描述周期精确的 i s s需要有时钟的 概念。在集成方式下i s s只需要能够 与s y s t e m c引脚相连即可, 其内部没有时钟, 而是通过外部封装模块的时钟来控制 其 运行。在独立运行方式下,为了能够描述 c a 的 i s s ,同样也需要某种方式来描 绘时序的过程,因此不得不考虑怎样使在独立方式下的 c a的 i s s 能够具有时序的 特点。 由于 s y s t e m c是源代码开放的软件因此可以 从研究其中关于信号实现的代码 来仿照其实现机制。 在 s y s t e m c中, 信号被定义为一个类,其属性包括三个同类型的变量, 例如布 尔型( b o o l ) 信号类的定义中包含如下三个属性变量: b o o l m va l ; b o o l o l d _ v a l ; b o o l n e w 一 v a l ; 其中m _ v a l 表示 信号的当 前 值, 而o ld _ v a l 表 示过 去值也 就是 上一个 时钟 周期 的值,而 n e w v a l 则是下一个周期信号将要改变的值 。此外信号类 中还定义 了多个 功能函数 。 其中最重要的是重载操作符” = ” 和” ” , 当遇到赋值操作符” = ” 时则将写入 的 值写入到 n e w v a l 中,而读取信号值时则返回 m - 数,该函数在每一时钟周期将 m v a l 的值赋给 c u r r v a l ,另外还有一个信号更新函 v a l ,因此在下一周期即可读到 更 新的值。通过上述几个函数即可实现信号在时序上的特征,也就是在同一周期内 如 果向某个信号写入新值,新值不会立刻反映出来而需要等到下一个周期时才能变 为 新值。 有了 这些信息就可自 行定义简单的信号类型了,例如可以仿照s y s t e m c的 做法把信号定义为具有三个同 类型变量数据和两个操作的结构或类,并且添加上信 号值的更新函数 即可。 华北电力大学 ( 北京)硕士学位论文 3 . 4 a r m 7 流水线的相关问题 3 . 4 . 1 支撑环境对 i s s的要求 首先应该看到 i s s是一个软件模块,它以程序运行的方式模拟了硬件 c p u 的 工作过程, 构造这样一个模块不完全受硬件的限 制。 因为在进行 s o c系统级设计时, 主要关心的是各个i p 模块的外部特征和模块之间的连接, 而对于模块内部如何构造 在系统级设计过程中无关紧要。 只是在s o c 设计的后续过程中才需要了 解内部结构。 正是因为这个原因, 在实现 i s s的流水线结构时, 可以自 行构造其内 部结构。 另外, 就目 前掌握的资料来看也不得不这样做,因为大多数 i p供应商隐藏了嵌入式 c p u 的关键技术, 例如本文实现的 a r m7 三级流水线组织的实现细节在所有的相关文档 中均没有说明。 3 . 4 . 2 a r m 7 三级流水线组织 6 ar m7的流水线组织如下: 取指:从存储器中取 出指令,放入指令流水线。 译码:指令被译码,并为下一周期准备数据通路的控制信号, 在这一级, 指令 占有译码逻辑,不占有数据通路。 执行: 指令占有数据通路, 寄存器堆被读取, 操作数被移位, a l u产生结果并 回写到 目的寄存器。 在任一时刻, 可能有 3 种不同的指令占用这 3 级中的每一级,因此,每一级中 的硬件必须能够独立操作。 当处理器执行简单的数据处理指令时,流水线使得每个 时钟周期能完成 1 条指 令,1 条指令用 3 个时钟周期来完成,因此有 3 周期的执行时间,但吞吐率是每个 周期1 条指令。单周期指令的 3 级流水线操作如图所示: a r m单周期指令的 3 级流水线操作: 取 指译码 执行 取指译 码执行 取 指取指取 指 指令 时间 当执行多周期指令时,流程不太规则,如下图所示。图中表示 了一组单周期指 华北电力大学( 北京) 硕士学位论文 3 4 a r m 7 流水线的相关问题 3 4 1 支撑环境对l s s 的要求 首先应该看到i s s 是一个软件模块,它以程序运行的方式模拟了硬件c p u 的 工作过程,构造这样一个模块不完全受硬件的限制。因为在进行s o c 系统级设计时, 主要关一1 5 , 的是各个i p 模块的外部特征和模块之间的连接,而对于模块内部如何构造 在系统级设计过程中无关紧要。只是在s o c 设计的后续过程中才需要了解内部结构。 正是因为这个原因,在实现i s s 的流水线结构时,可以自行构造其内部结构。另外, 就目前掌握的资料来看也不得不这样做,因为大多数i p 供应商隐藏了嵌入式c p u 的关键技术,例如本文实现的a r m 7 三级流水线组织的实现细节在所有的相关文档 中均没有说明。 3 4 2a r m 7 三级流水线组织 6 a r m 7 的流水线组织如下: 取指:从存储器中取出指令,放入指令流水线。 译码:指令被译码,并为下一周期准备数据通路的控制信号,在这一级,指令 占有译码逻辑,不占有数据通路。 执行:指令占有数据通路,寄存器堆被读取,操作数被移位,a l u 产生结果并 回写到目的寄存器。 在任一时刻,可能有3 种不同的指令占用这3 级中的每一级,因此,每一级中 的硬件必须能够独立操作。 当处理器执行简单的数据处理指令时,流水线使得每个时钟周期能完成l 条指 令,1 条指令用3 个时钟周期来完成,因此有3 周期的执行时间,但吞吐率是每个 周期1 条指令。单周期指令的3 级流水线操作如图所示: a r m 单周期指令的3 级流水线操作: 指令+ 时间 当执行多周期指令时,流程不太规则,如下图所示。图中表示了一组单周期指 1 3 华北电力大学( 北京) 硕士学位论文 令a d d ,而在第一个a d d 指令的后面出现了一个数据存储指令s t r 。访问主存储 器的周期用浅阴影的块表示,因此,可以看到在每一个周期中都使用了存储器。同 样,在每个周期中都使用了数据通路,这涉及到所有的执行周期,地址计算和数 据传送。译码逻辑总是产生数据通路在下一周期使用

温馨提示

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

评论

0/150

提交评论