计算机毕业论文

浅析计算机体系结构模拟技术现状挑战与展望论文

时间:2021-03-22 08:24:36 计算机毕业论文 我要投稿

浅析计算机体系结构模拟技术现状挑战与展望论文

  1 引言

浅析计算机体系结构模拟技术现状挑战与展望论文

  计算机系统日益复杂,其研制难度不断增加,开发风险不断加大,研制周期越来越长,体系结构模拟技术在计算机体系结构研究和系统设计中的作用愈加显著. 通过对计算机系统的建模、仿真及评估,科研人员可以验证新型体系结构设计;将该技术导入产品设计则可优化系统方案、降低开发风险并提升开发效率.

  作为一种系统评估手段,体系结构模拟器运行在宿主机上,通过加载测试程序来验证新的设计方案,发现其中潜在的缺陷,从而改进设计并有效控制风险. 体系结构模拟器通常使用软件方式对部分或全部计算机系统硬件建模,对体系结构的指令集架构、处理器、存储系统、网络传输拓扑结构等进行模拟,验证系统的功能和性能. 体系结构模拟器已成为系统研究和设计开发中不可或缺的工具.

  早期体系结构模拟采用分析验证技术,如数据驱动验证,即跟踪收集性能测试程序在目标计算机上运行所产生的数据信息,通过分析该数据信息来评估体系结构的性能.这是一种后验证方法,不利于在项目早期开展系统架构分析和风险评估. 为在项目早期论证系统设计方案,在数据驱动验证的基础上又提出了模型分析技术,该技术使用数学工具对计算机系统各部件间的接口进行建模,通过评估资源利用率和相应时序特性来验证目标系统的性能. 模型分析技术可在体系结构设计初期发现影响系统性能指标的关键因素,从而指导方案设计和改进. 但由于模型建立及求解过程复杂,为了简化模型,必须将部分细节特征抽象化,导致模型分析结果精度低,测试结果不能准确反应真实系统特性. 软件模拟技术则可以较好的解决这一问题.模拟器使用软件的方式模

  拟真实硬件的功能及时序特性. 软件模拟技术可模拟程序执行的全过程,获得程序运行过程中系统的动态行为及特性. 然而,软件模拟技术在表现出较高精度和灵活性的同时,也存在模拟速度过慢的问题. 为了提高模拟速度,软件模拟与硬件加速相结合的技术即混合模拟技术应运而生. 混合模拟技术将体系结构中的部分或全部部件用FPGA 或硬件仿真器( emulator) 实现,从而提高模拟性能.

  2 模拟精度

  模拟器精度主要受三个方面因素影响:

  1) 系统建模精确程度;

  2) 输入参数拟合程度;

  3) 指令执行时序的精确程度.

  模型要精确的匹配真实系统设计,需开发者准确的理解建模任务,并正确的开发出相应模型; 在此基础上,要针对系统具体行为设计输入参数集. 为了实现性能模型的简洁和快速执行,开发者往往将一些细节特征抽象化,导致系统时序出现偏差,降低模拟精度. 在实际应用中,还存在其它因素影响模拟精度,如缓存控制指令的精确性、I /O 系统模拟的准确性等.

  2. 1 踪迹驱动模拟技术

  早期的体系结构模拟器主要采用踪迹驱动( trace-driven)、数学建模分析等方法. 踪迹驱动技术收集指令在已有计算机系统中执行所产生的踪迹数据,并将这些信息作为输入驱动模拟器运行. 这种技术的优点在于可仅对系统的局部进行细致模拟而无需关注系统的其它部分,从而降低了开发复杂度并提升了执行速度. 缺点是踪迹本身过滤了系统的动态信息,如分支预测错误等,因而无法观察系统的动态特征,并且踪迹一般是基于特定参数的固定序列,因此无法代表不同参数对应的多种执行情况. 典型的轨迹驱动模拟器包括磁盘系统模拟器DiskSim、Cache 模拟器Dinero等. 数学建模分析方法通过建立数学模型来描述目标系统特征,由于不能精确的获得性能数据,因此这种方法的误差较大.

  2. 2 执行驱动模拟技术

  执行驱动( execution-driven) 模拟技术建立目标系统的功能和性能模型,通过应用程序的执行获取性能数据,从而获得较高的模拟精度,执行驱动的模拟器使用目标程序的二进制代码作为输入来驱动模拟过程. 在模拟过程中,模拟器模拟指令的动态执行( 如分支预测等) 过程,从而在不需要目标系统硬件的情况下获得更接近真实目标系统运行的结果,并能够精确的模拟不同部件对系统性能的影响. 相对于踪迹驱动等技术,执行驱动减小了存储空间的开销,模拟器的输入数据量只与程序的静态指令数成比例,动态指令则在模拟过程中由模拟器生成,一定程度上会影响执行速度. 采用执行驱动的模拟器可以运行完整的操作系统和应用程序,是实现全系统模拟的一种常用方法. 执行驱动技术已经成为体系结构模拟的主流技术,典型的应用有SimpleScalar、SimOS、Proteus等.

  3 模拟速度

  模拟速度是衡量模拟器性能的重要指标. 精确的性能模拟是非常耗时的过程,特别是随着系统中处理器核心数的迅猛增长,模拟大规模计算机系统所需要的时间会变得难以接受. 以200KIPS 的模拟执行速度模拟单核1 秒运行需要数小时,而模拟千核系统的1 秒运行需要耗时一年以上,这显然不能满足现代体系结构的研究与设计需求. 模拟加速一直以来都是模拟技术研究领域重点关注的问题. 典型的加速方法包括动态二进制翻译( DBT) 、穿线码加速、采样加速、同构加速、并行模拟加速、硬件加速等.

  3. 1 动态二进制翻译

  动态二进制翻译( DBT) 将某个指令集上可执行的二进制代码翻译到宿主机指令集执行. 二进制翻译最初采用解释执行,它对源处理器代码中的每条指令实时解释执行,系统不保存解释后的代码,翻译一条便执行一条指令. 解释器相对容易开发,但对代码执行不做任何优化,执行效率低. 静态翻译技术解决了这一问题,它在源处理器代码执行之前对其进行翻译,有足够的时间对翻译后的代码做完整细致的优化,并且一次翻译的结果可以多次使用,避免了多次解释操作带来的时间开销. 但是,静态翻译无法很好的解决代码自修改、间接过程调用、间接跳转等问题.

  动态翻译是一种实时编译技术,即在程序运行过程中对执行到的片断进行翻译,解决了静态翻译存在的问题. 程序运行时,DBT 翻译器在其本地地址空间开始执行指令、逐行解码,遇到系统调用指令则采用翻译器自身的调用函数进行替换,在调用点接替操作系统内核的职能. 当程序中有频繁重复的指令片段时,DBT 将直接执行已经翻译好的相应代码,从而省去了重新编译的过程. 高速缓存中放置翻译后程序片断的位置称为翻译缓存,当该缓存填满时,DBT 采用两种方式处理: 清空翻译缓存区域、重新加载; 或者增加缓存区的大小. 如果程序的一个运行指令集合超出翻译缓存空间,则第一种方法将会失效; 而第二种方法会降低cache 的利用率,因为大多情况下需要一次翻译的片断长度有限; 具体策略根据需求进行选择. 动态二进制翻译可以解决代码自修改问题,利用执行时的动态信息去发掘优化机会,对用户能做到完全透明. 将DBT 应用于体系结构模拟器,编译器可以选择只翻译那些频繁执行的程序和用户需要详细模拟的程序,这样既能提高cache 利用率,也能让编译器更好的优化目标代码,有效提高模拟速度.

  3. 2 采样技术

  采样技术是通过减少模拟运行的指令数来达到模拟加速的目的,具体分为随机采样、周期采样和统计采样. 随机采样是指随机选择一些程序片断进行模拟运行,将模拟结果以某种方式合并起来,用于代表整个测试程序的运行. 随机采样的片断长度一般是固定值,采样片断之间的距离则是随机的,可以通过反复重新采样后求模拟结果的平均值,使其尽可能的接近整个程序的运行结果. 周期采样是在程序中周期性的选择片断进行模拟运行,用户可以灵活的设置周期长短和间隔大小. 统计采样是基于统计学的方法推测出测试程序的特征,通过测量变化差异使采样片断能够反映出程序的变化,从而确保采样集是代表整个程序的最小采样集. 采用该类技术的模拟器有SimPoint、SMARTS等.

  采样技术的关键在于程序片段的选取. 随机采样不确定性较大,该方式测试结果与整个程序结果之间存在偏差,反复采样取平均方法可以提升准确度,但验证过程耗时. 周期采样同样难以选择合适的采样频率和片断长度以使取得的采样集是最小集合. 统计采样技术需要通过合适的方法找到最佳采样集. SMARTS 模拟器就是采用基于统计的采样方法,采样片断是周期性采样,长度基本固定但允许有轻微的变化以对齐时钟周期边界. 为保证片断执行时宿主机的cache 以及分支预测器等处于正确的状态,SMARTS 在详细执行片断程序之前先粗略的模拟片断之间的代码以完成Cache 及分支预测器等部件的初始化. 模拟过程分为功能模拟和详细模拟阶段,功能模拟执行间隔代码,这个阶段模拟器忽略许多内部状态的记录,程序快速向前推进,为下一阶段的详细模拟建立正确的部件状态; 详细模拟阶段则精确执行程序片断. FFX + WUY + Run Z 也是一种基于统计的采样方法,FFX( Fast-ForwardX) 是指测试程序运行开始后快速执行X 百万条指令,粗略模拟; WU Y 指详细模拟之后的Y 百万条指令,以便建立起符合详细模拟情况的运行环境,但该阶段的模拟结果并不作为整个模拟结果的参照; 接下来的Z 百万条才是模拟器真正详细执行的程序段. 该方法可极大的减少模拟运行时间,但Z 百万条指令往往不能代表整个程序的执行结果,从而导致模拟误差.

  4 可用性

  对于体系结构模拟技术,可用性包括两个方面: 一方面模拟器应能适应各种系统应用场景,如: 单核单任务、单核多任务与多核多任务等; 另一方面,加载到模拟器的测试程序可用度高,支持多个平台和多种编译器,使模拟器能够发挥最大的验证功效.

  4. 1 用户级虚拟化

  随着计算机系统处理器核数的迅猛增长,千核系统成为现实,给模拟器技术带来了巨大挑战. 由于千核系统规模庞大,能加载的测试程序类型有限,无法全面的评估千核系统特性,进而影响了千核系统的研究、开发. 为解决该问题,需要新的技术使模拟器能够加载更广泛的测试程序.Daniel 等人使用轻量用户级虚拟化技术( lightweight userlevel virtualization) 构建了ZSim 模拟器,实现千核系统测试程序的灵活加载. 用户级虚拟化技术使用动态二进制翻译给用户进程提供虚拟系统视图来支持多程序并发执行,并支持运行管理及客户-服务器类型负载. 常规的用户级模拟器通常不能模拟此类程序.为实现千核系统的模拟,模拟器利用了宿主机上的多个处理器,突破了传统模拟器仅能在单处理器上运行的局限. 为适应多处理器并行架构,ZSim 每个进程利用共享内存段作为一个全局堆,所有的仿真状态都存储在全局堆中. 通过调整共享堆和库代码段的映射地址,实现跨进程无缝信息传递. 尽管线程来自不同的.处理器,ZSim 也可被视为一个简单的多线程应用,并可使用轮换调度算法( round-robin) 来创建任意数量的线程. 为避免模拟器操作系统出现死锁现象,ZSim 舍弃传统模拟器使用的修改测试程序的办法,而是识别出阻塞的系统调用的子集,通过调整内部同步点使得线程加入和退出来避免死锁. 为摆脱程序运行依赖精确的时间,模拟器虚拟化了rdtsc( 读时间戳计数器) 指令、只有少数内核接口、睡眠处理和超时处理调用返回时间信息,使得宿主机与模拟器的时间相互独立. 通过引入上述技术,ZSim 实现了多种类型测试程序的加载运行、如客户端-服务器类程序,并可模拟完整的千核系统.

  4. 2 优化测试程序

  优化测试程序是通过精简基准测试程序集,使模拟测试更具有针对性,以提高模拟的效率. 对于基准测试程序集,其初衷是将一些基准测试程序集中化、规范化,以有效评测系统在各种应用场景下的性能. 该程序集可以弥补基准测试程序个体的不足. 但也存在以下几个问题:

  1) 缺少可信度,基准程序的运行往往与实际程序运行存在差异;

  2) 每个程序有不同的运行条件,用户为改善测试程序的性能常使用专用标记,但这些标记又容易引起许多程序的不合法转换或降低其他程序的性能;

  3) 完整程序集的运行时间长. 由于研究侧重点不同,研究者往往采用精简代码的方式来获得更好的系统性能测试结果. 以SPEC CPU2000 为例,它是SPEC 中面向处理器的基准测试程序集,为处理器研发人员广泛使用,其包含多组性能测试程序,能测试多处理器计算机系统的整数运算性能和浮点数运算性能. 其中,整数运算基准程序以C 语言开发为主,浮点运算基准程序主要用Fortran 语言开发,用于各种CPU 的性能评价. 为了优化基准测试程序,众多处理器研究者致力于研究如何精简代码使得模拟评估处理器过程更为高效,所做的工作包括减少代码运行、减少输入的数据等.

  Timothy 等人通过分析测试程序的基础模块分布( Basic Block Distribution) ,试图运行一些程序片断去代替整个程序的运行. 他认为不同的基础模块能唯一标识不同的指令执行阶段,基础模块的周期运行反映了计算机系统各个构件的周期运行,如IPC、分支命中率、缓存命中率、预测值、预测地址、重排序缓存占用等. 由于基本块的频度信息可以使用工具快速收集,因此该方法提供了一种寻找程序模拟点及周期性特征的实用方法. KleinOsowski 等人在SPECCPU2000 的基础上开发了MinneSPEC 测试程序,该程序精简了模拟输入的参数集,但保留原数据集内部函数的运行权重分布,包括初始化、主要计算功能和复位功能等,极大的降低了模拟运行时间. 但是,MinneSPEC 测试程序所模拟出的结果与原测试指令集有较大差异,取得的优化效果有限. Erez 等人通过选择执行部分程序来代表完整的程序执行,使用统计驱动算法生成模拟点集合,并使用检验算法去选定代码执行初期的模拟点. 该方法的难点在于如何给出一个指标以选择合适的模拟点,该指标基于程序基本块的分布,通过研究它们的块矢量差分布情况来决定运行的代码.

  5模拟器技术面临的挑战

  现有的计算机体系结构模拟器在精度、速度、可用性和易用性等方面均存在不同程度的不足. 一直以来,研究人员不断努力改进模拟技术. 如踪迹驱动的较大误差使得执行驱动技术得到重视和发展,基准测试程序的漫长运行时间促使人们对采样技术进行研究,计算机系统规模的日渐庞大推进了并行模拟技术的发展. 随着计算机系统逐步进入千核时代,模拟技术又迎来了新的重大挑战.

  体系结构模拟器面临的首要挑战是系统建模复杂度急剧增加. 因功耗和散热等因素的限制已不能继续采用提升单一处理器频率的方式提升系统性能,计算机系统多采用多核、多处理器方式构建. 即使每个处理器、核心均在较低的频率、功耗下运行,其系统整体性能依然大幅超越单核处理器系统.Intel 的实验结果表明,单核处理器每提高20% 的时钟频率,仅能提升13%的性能,但增加73% 的功耗; 而当增加第二个核心时,可在降低20% 时钟频率的同时提高73% 的性能. 对于通用CPU,在上个世纪90 年代末, IBM、惠普、SUN 等服务器厂商就相继推出了多核服务器CPU. 2006 年, Intel 推出了双核处理器,接下来陆续推出了面向服务器、工作站和个人电脑的4 核、8 核处理器. 2014 年2 月, Intel 又发布具有15 核心的至强通用处理器,基于该处理器构建的64 路分布式共享内存系统已经接近1000 核心. 对于众核处理器,2007 年Tilera公司发布的嵌入式处理器TILE64 包含了64 个核心,在2010年Supercomputer 会议上Intel 公布了单芯片48 核的云处理器架构,并声称其理论上可达到1000 个核心,而GPU 已经具有数千核心.

  计算机系统已经步入千核时代,但现有的体系结构模拟器大都不能胜任千核系统模拟,如单线程运行的Gem5、Flexus、MARSS 等模拟器虽然理论上可以模拟千核系统,但其在可用资源、模拟速度等方面均不能满足千核系统的模拟需求. Hypersim 能较好的模拟HPP 高性能计算机体系结构,但只针对集群系统,适用范围有限; ZSim 采用多处理器并行化方法提高了千核系统模拟的速度,相比单线程模拟器取得了显著的进步,但由于采取了较多的精简策略,影响了其模拟精度.体系结构模拟器面临的第二个挑战是模拟速度与精度难以兼顾. 现有的模拟加速技术如采样技术、动态二进制翻译等均是以牺牲模拟精度为代价. 模拟器执行全部的基准测试程序集能够获得完整的系统特征数据,但耗时巨大,执行部分测试程序或者程序的部分代码能加快模拟速度,但影响测试结果的精度,故体系结构模拟需要在精度和速度间权衡. 即使以大幅损失精度为代价,现有模拟器的模拟速度依然无法满足千核系统的模拟需求. 硬件加速方案是一种选择,但软硬件混合模拟器的开发难度大、周期长,因此硬件加速还不能成为主流的模拟器技术.

  模拟器技术面临的第三个挑战是对异构多核系统支持不足. 一些计算密集型应用如图形处理、气候模拟、分子动力学计算等对系统处理性能要求高,通用处理器系统无法满足其需求,而GPU 拥有超强的浮点处理、矢量计算能力,特别适合大规模、低耦合度并行计算任务. 相比于通用处理器,GPU 在图形处理、气候模拟、分子动力学计算等应用处理上有百倍甚至上千倍的性能提升. 因此采用CPU + GPU 并行模式,占用系统绝大部分性能的密集型计算将由GPU 执行,而少量控制型任务( 如运行操作系统、处理数据交互等) 将由CPU 执行.根据Amdahl 定律,采用GPU 加速密集型计算任务处理措施后,系统可以获得较好的加速比,CPU + GPU 模式在高性能计算中获得了广泛应用. 但是当前,面向CPU + GPU 异构系统的模拟研究极为有限.

  大多数模拟器虽然集成了多种处理器模型,但在模拟时只能使用单一处理器模型,尚缺乏对异构多核系统并行模拟的支持. LIN 等人构造的异构多核架构模拟器虽然实现了在多个SimpleScalar 进程中运行不同处理器模型,但其系统结构与真实异构系统存在较大差异,不能精确的模拟异构系统.

  6 研究展望

  为了更好支持未来计算机系统的研究和设计,体系结构模拟技术需要从4个方面取得更多的创新和突破. 针对归纳4A 理论示意图Fig. 1 4A theory schematic diagram的模拟器4 个特征,本文提出4A 理论( accuracy,acceleration, availabilityand adaptability ) ,即未来体系结构模拟技术需在精度、速度、可用性、易用性4 个方面均取得重大突破,理想的模拟器将会是这4 类技术发展的交集.基于4A理论,本文认为如下几个研究方向需要重点关注:

  6. 1 基准测试程序集优化

  基准测试程序优化是一种提升模拟效率的重要方法. 基准测试程序应能准确、高效的测试目标系统,同时具备一定的灵活性,允许用户对源代码进行修改. 基准测试程序集需要面向多种类型应用,尽可能覆盖各个应用场景.

  6. 2 模型组件化

  体系结构性能模拟要求建立精确的时序模型,各部件模型之间需要频繁的通信和同步,成为并行模拟器设计的难点.若将并行模拟器中通信和同步功能分别独立实现,各部件模块内部进行功能模拟,通过调用统一接口模型进行交互,则可使设计者更专注于部件模块的建模与设计,而较少考虑它们之间的通信和同步问题.

  6. 3 大规模并行模拟

  当前大规模计算机系统能够提供大容量内存、IO 带宽和强大的计算能力,现有绝大部分模拟器还基于单线程运行,无法充分利用大规模计算机系统提供的资源. 并行化模拟技术尚未成熟,仍然需要深入的研究和探索.

  6. 4 异构系统模拟

  异构多处理器架构在解决科学计算、图形处理、加解密等高性能计算问题中已经发挥出巨大的作用,但异构模拟技术研究相对滞后,模拟器支持有限,异构模拟技术是未来体系结构模拟技术重要发展方向之一.

  6. 5 硬件加速技术

  FPGA 或者硬件仿真器( emulator,如cadence 公司的Palladium等) 加速技术已经得到普遍应用,利用上述技术可实现单个部件或者全系统的模拟,不仅大大加快了模拟器的速度,而且提高了基准测试程序的执行效率. 但是随着计算机系统规模越来越大,单片FPGA 或单台硬件仿真器无法容纳全系统甚至主要部件逻辑,而采用多片FPGA 或多台硬件仿真器加速方案依然存在诸多协同、交互难题,故硬件加速技术仍需要进一步发展.

  7 结束语

  计算机系统已步入千核时代,规模庞大、结构复杂、开发周期长、风险高,迫切需要计算机体系结构模拟技术提供强有力的支撑. 本文首先按照精度、速度、可用性和易用性4 个方面的特征对计算机体系结构模拟技术现状进行了分析和归纳,并总结其不足之处. 随后论述了大规模计算机系统模拟面临的若干挑战,并提出了未来理想模拟器应是精度、速度、可用性及易用性技术发展交集的4A 理论,据此对体系结构模拟技术未来发展进行展望.

【浅析计算机体系结构模拟技术现状挑战与展望论文】相关文章:

简述计算机体系结构软件模拟技术论文03-29

计算机体系结构软件模拟技术的研究论文04-16

微生物制药最新研究现状与展望论文08-07

我国化学灌浆技术发展与展望论文10-22

新闻传播学研究生教育现状与挑战论文10-24

激光切割技术现状与发展趋势论文01-19

浅析建筑工程造价管理现状与对策的论文11-26

电子商务服务业发展现状问题与展望论文04-05

小学信息技术教学现状与问题分析论文03-15