设为首页 加入收藏
   
     
   
科技•信息
 
IA32逻辑功能仿真实现
双击自动滚屏 发布者:admin 时间:2010-8-2 12:16:48 阅读:155次 【字体:

摘  要
本设计是一个对IA32CPU模拟并动态演示的设计,它应用了VC6.0的MFC开发出的一个仿真硬件的虚拟实验平台,该平台为我们提供了一个对各类硬件定义与实现功能的规范,依据规范我们将CPU、主存等硬件设计成抽象的器件类,并将其封装成随时供平台调用的动态链接库。DLL库中包含了对CPU模型设计,我们通过移植虚拟机Bochs下的CPU库来实现核心功能。
CPU核心功能采用调用bochs里的相关库来实现,因此我们将虚拟机bochs中的CPU指令库移植到设计中,并将它封装成一个静态库,器件类可通过调用该库中的程序来完成相关操作。为了使DLL调用这个指令库,CPU内的cpu_loop函数进行了修改,同时又在boshs中的stubs库中扩展了CPU功能。
关键词:虚拟实验平台;IA32逻辑功能;仿真;封装;移植

概述
随着计算机技术的迅猛发展,越来越多的电子器件被开发出来,CPU、主存等硬件的功能更加强大、结构更加复杂,为了更方便地了解硬件的工作时序和逻辑功能,人们开始采用虚拟技术来仿真硬件的工作时序和逻辑功能。计算机仿真技术是以多种学科和理论为基础,以计算机及其相应的软件为工具,通过虚拟试验的方法来分析和解决问题的一门综合性技术。计算机仿真(模拟)早期称为蒙特卡罗方法,是一门利用随机数实验求解随机问题的方法。其原理可追溯到1773年法国自然学家G.L.L.Buffon为估计圆周率值所进行的物理实验。根据仿真过程中所采用计算机类型的不同,计算机仿真大致经历了模拟机仿真、模拟-数字混合机仿真和数字机仿真三个大的阶段。20世纪50年代计算机仿真主要采用模拟机;60年代后串行处理数字机逐渐应用到仿真之中,但难以满足航天、化工等大规模复杂系统对仿真时限的要求;到了70年代模拟-数字混合机曾一度应用于飞行仿真、卫星仿真和核反应堆仿真等众多高技术研究领域;80年代后由于并行处理技术的发展,数字机才最终成为计算机仿真的主流。现在,计算机仿真技术已经在机械制造、航空航天、交通运输、船舶工程、经济管理、工程建设、军事模拟以及医疗卫生等领域得到了广泛的应用。
2 需求分析
2.1 虚拟实验台中的CPU仿真
计算机技术、大规模集成电路技术和通讯技术的飞速发展,为虚拟实验的发展奠定了坚实的基础。虚拟实验就是在通用计算机上加载相应的软件或硬件,使得使用者在操作这台计算机时,就像是在操作一台专用的传统试验设备一样。在虚拟实验系统中,软件是整个系统的关键,任何以个使用者都可以通过软件的相关设置来达到要实现实验的效果。
虚拟实验就是利用外部输入(如鼠标的点击、拖动和键盘的敲击等),将计算机上虚拟的各种仪器,按实验要求、过程,组装成一个完整的实验环境,同时在这个环境中完成实验操作,包括实验器材的添加、实验条件的改变、数据采集以及实验结果的模拟、分析。它包含了虚拟仿真技术、计算机技术、实验技术、网络技术与专业等多方面理论知识。该平台已经设计好了,我们的任务就是能够正确无误的使用它,使各自的设计在平台下正常显示出来。
2.2 采用VC为开发工具
Visual C++是一款比较好的面向对象的软件开发工具,使用次工具我们开发出了可视化虚拟的CPU器件。
2.3 实验台器件需封装成DLL
设计的CPU器件以及这些器件的逻辑功能被封装成DLL,提供给实验平台使用。实验台可根据需要随时调用DLL来进行相关操作。
2.4 CPU的核心功能采用移植bochs
上述的DLL中CPU器件逻辑功能是采用移植虚拟机bochs中CPU库的指令系统来实现的。
3 相关知识介绍
3.1 CPU虚拟化技术
虚拟化是一个广义的术语,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。 虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。虚拟化技术也与目前VMware Workstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面。而CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM会很容易提高性能,相比软件的虚拟实现方式会很大程度上提高性能。虚拟化技术可提供基于芯片的功能,借助兼容VMM软件能够改进纯软件解决方案。由于虚拟化硬件可提供全新的架构,支持操作系统直接在上面运行,从而无需进行二进制转换,减少了相关的性能开销,极大简化了VMM设计,进而使VMM能够按通用标准进行编写,性能更加强大。3.2 VC++6.0及MFC介绍
随着多媒体技术和图形图象技术的不断发展,可视(Visual)技术得到广泛的重视,越来越多的人开始研究并使用可视化技术。Visual C++是一个很好的可视化编程工具,使用它开发基于Windows的应用程序大大缩短了开发时间,而且它的界面友好,便于程序员操作。
MFC用类编写Windows应用程序的C++类集,以层次结构组织起来,其中封装了大部分Windows API函数和 Windows控件,而基础的虚拟平台就是在次基础之上而开发出的。使用MFC类库和Visual C++提供的高度可视的应用程序开发工具,可是应用程序开发变的更简单,开发周期极大地缩短,提高代码的可靠性和可重用性。它提供的类库对程序设计的高度抽象,使得程序员不用放在程序设计的具体细节上,而是对功能的扩展上,大大简化了开发工作。在开发过程中,我们所做的就是编写封装器件的程序,由平台调用之来显示出控件,除了编写一些相关消息响应函数外,大部分工作由系统完成。
3.3 动态连接库 DLL
动态连接库DLL是Dynamic Link Library 的缩写形式,动态链接库 (DLL) 是作为共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL 副本的内容。
   动态链接库是一个能够被应用程序和其它的DLL调用的过程和函数的集合体,它里面包含的是公共代码或资源。由于DLL代码使用了内存共享技术,在某些地方windows也给了DLL一些更高的权限,因而DLL中可以实现一些一般程序所不能实现的功能,如实现windows的HOOK、ISAPI等
DLL被某个工程调用,编译后仍是独立的。编译后,一个DLL库形成一个单独的可执行文件,而不与任何其它的可执行文件连接在一起,因而DLL库并不从属于某个特定的工程,当多个工程调用同一个DLL库时只有第一个工程把DLL库调入内存,其余工程并不重复调入同一个DLL库到内存,而是到同一个共享内存区读取。并且,DLL的执行代码是在程序运行期间动态调入的。
上一篇|下一篇

 相关评论

暂无评论

 发表评论
 昵称:
 评论内容:
 验证码:
  
打印本页 || 关闭窗口
 
 

咨询电话: 13891856539  欢迎投稿:gmlwfbzx@163.com  gmlwfb@163.com
617765117  243223901(发表)  741156950(论文写作指导)63777606     13891856539   (同微信)

All rights reserved 版权所有 光明论文发表中心 公司地址:西安市碑林区南大街169号-6
CopyRight ©  2006-2009  All Rights Reserved.


  制作维护:中联世纪  网站管理
访问 人次
国家信息产业部ICP备案:陕ICP备17019044号-1 网监备案号:XA12993