CPU模拟器介绍
CPU模拟器介绍
CPU 模拟器--SimOs 简介
在硬件上开发和调试一个新系统很浪费时间也是很让人头痛的事情,如果能够有一个稳定的模拟实际硬件的模拟环境那将在实际工作中给我们带来很大的帮助。通常在虚拟机上运行的程序会有一点慢,不过这些缺点于实际开发调试过程中的“痛苦”相比就变得不再重要了。在国外一些这样类似的技术已经存在,而且他们也发布了一些作品。SimOs Release 2 是斯坦福大学对外发布的第一个版本。下面就谈谈 建立CPU 模拟虚拟机环境和虚拟机的使用:
1、下载CPU 模拟器(SimOs)
可以到斯坦福大学关于模拟CPU研究的主页(http://simos.stanford.edu)下载一个他们发布的CPU 模拟器Release 2 (当前)。下载的时候,会要求你填写一个表格,比较简单,填写完成之后,就可以下载了。
如果不想填写什么表格,那么就直接在访问 http://simos.stanford.edu/release2/download.html 就可以看到下载的链接了。
2、安装SimOs
2.1 系统需求
绝大多数SimOs 的开发者都是使用 SGI 的计算机,所使用的操作系统是SGI 的IRIX 操作系统,SimOs 推荐运行的系统是基于MIPS R4000 的SGI 的计算机,操作系统是IRIX5.2 或者更高的版本,尽管没有在SGI其他的处理器例如R5000、R8000上面充分测试,但是软件应该是可以在这些处理器上正确的运行的。当前发布SimOs的版本不能够在基于 MIPS R3000 的处理器上或者是低版本的IRIX 操作系统上运行。
当前发布的SimOS Release 2 可以支持在基于Sun 的SPARC 的系统上面运行。如果你没有SGI 或者是SUN 的计算机,你可以尝试把SimOs 移植到你的操作系统下面来运行,把SimOs 移植到基于Unix 的Big-Endian 的机子上应该不难,如果移植到基于DEC或者是Inter
l X86 系列的 Little-Endian计算机上可能需要比较多的工作,因为SimOs 的代码中认为运行SimOs 的处理和SimOs 所模拟的处理器的字节序是相同的。
硬件需求:
SinOs 需要大量的 CPU、内存、硬盘资源。最低配置需要 50 M 内存,几百 M 硬盘。 当然运行的CPU 是越快越好了。
软件需求:
需要Perl 5.002 或者是更高的版; gzip/gunzip
在下载的软件包中已经包含了 SGI/SUN 计算机上使用的工具,如果你想自己编译源代码,你需要 gmake 和 gcc ,你可以以anonymous ftp 到prep.ai.mit.edu 来下载这些工具。
2.2 斯坦福发布的SimOs 组件
当前发布的SimOs 分为三个部分:第一部分是SimOs 的源代码和二进制文件;第二部分是 IRIX 5.3 移植的SimOs 的系统内核;第三部分是在运行于SimOs 中的IRIX 系统上面的一些应用例子。所有这些文件共需要100M 的空间。
在 /usr/local 下建立SimOs ,把所有的组件放在这个目录下。设置 $SIMOS_DIR 环境变量,指向刚刚建立的SimOs 的目录。
host#>setenv SIMOS_DIR /local/usr/SimOs
文件 simos1.0-binaries.tar.gz 包含了SimOs 的所有源代码,以及一些支持文件。
host#>cd $SIMOS_DIR
host#>gunzip simos2.0-binaries.tar.gz
host#>tar vfx simos2.0-binaries.tar
你就可以看到源代码了。如果你的SimOs 运行在SGI 的平台上,你应该先把 $SIMOS_DIR/bin/SGI/splot.ps 拷贝到 /usr/local/lib
host#>cp bin/SGI/splot.ps /usr/local/lib
2.3编译SimOs 源代码
你可以不必使用SimOs 发布包中的二进制文件,可以自己从源代码中编译SimOs 。编译的过程是很简单的,把src 目录移到 $SIMOS_DIR 目录下面,进入src 目录,输入gmake 就可以了。在编译之前,你应该设置一个环境变量$CPU,环境变量CPU 现在只是支持两种,一种是SGI 另外一种是 SUN,如果在 SGI 的平台上面编译,那么得到的二进制文件为simos ,如果在Sun 的平台上面编译,那么得到的二进制文件为 simos-sparc 。编译过后,你会在$SIMOS_DIR/bin 目录下面找到编译生成的二进制文件。
代码的体系结构,很容易让你扩展新型的 CPU、IO设备、系统接口。在src 下面有一个 Makefile 控制着编译的选项,你可以修改Makefile 来达到你编译的要求。
3、在SimOs 上安装IRIX 5.3
现在SimOs 的一个最显著的特点是能够模拟一个SGI 计算机,能够在SimOs 上面运行IRIX 操作系统。在SimOs 上使用IRIX 操作系统需要一定的许可的,下载IRIX 需要同意一个使用许可。你可以从 http://simos.stanford.edu/ 下载到可以在SimOs 上面运行的 IRIX 5.3 内核。
3.1 IRIX 5.3 内核
simos2.0-irix.tar.gz 文件中包含移植到SimOs 的IRIX 的操作系统内核,要下载这个文件,你需要的得到SGI 公司的使用许可。
host#>cd $SIMOS_DIR
host#>gunzip simos2.0-irix.tar.gz
host#>tar vfx simos2.0-irix.tar
为了在SimOs 上面运行,IRIX 需要做一点小的修改,修改主要在设备驱动程序方面,关于这个版本的IRIX 的其他信息,请访问http://www.sgi.com/Products/hardware/challenge/IRIX53/IRIX53.html 获得。
3.2 建立IRIX启动盘文件
为了能够启动操作系统,启动盘文件上必须有一些配置文件和程序,由于SGI 使用许可权问题,斯坦福没有随SimOs 发布IRIX 启动盘文件,你可以使用下面两种方法来建立自己的启动盘文件,从现有的启动盘或者从一个SGI 的机子。
在发布的二进制文件中,有一个mkfs,用来建立IRIX 文件文件系统的,无论才有那种方法,我们都必须运行一个脚本,来创建 mkfs 的输入,建立启动盘和运行脚本的具体过程在SimOs 的用户手册中有详细描述。最后我们要生成一个 root.disk 的只读文件,SimOs 会办运行过程中的信息、配置保存到文件中。root.disk 文件必须在SimOs 运行的路径中链接明为 DISK0.1.
I : 使用IRIX 5.3 发行的CD 安装
建立启动盘文件的第一种方法是你 IRIX5.3 发行盘,SGI 的发行盘上的文件格式是efs 格式,你需要使用运行了 IRIX 的计算机才能够访问。可以按照下面的步骤来制作启动盘文件。
1、host#>inst -a -f /CDROM -r /tmp/SimOS-cd-files -I c++_eoe,c_eoe,compiler_eoe,eoe1,eoe2,x_eoe,insight.sw.data,dps_eoe.sw.dps
fonts,insight.sw.public
运行了这个命令之后,/tmp/SimOs-cd-files 下面会有几十M 的文件,
2、进入 $SIMOS_DIR/disks/build 目录,编辑root-cd.bld 这个文件,这个文件是用来描述哪里可以找到启动盘文件所需要的文件,文件的具体格式在用户手册中有描述,我们只需要修改这个文件的第一行,改为安装的 IRIX 操作系统的文件所在的目录。
3、运行 make-cd-root-disk 脚本,这个脚本必须以超级用户的权限来执行,这个脚本运行需要一段时间,最后你会看到“SUCCESSFUL COMPLETION”字样,否则就是什么地方出现错误,启动盘文件没有制作成功。
如果上面的步骤都是正确的,你就会在$SIMOS_DIR/disk/build 目录下面发现只读的启动文件,把这个文件移动到 $SIMOS_DIS/disk/build 目录下面。创建的启动文件有一个root 分区,和 20 M 的交换分区。
II : 使用IRIX 5.3 操作系统来制作启动盘文件
如果你没有IRIX 5.3 的光盘,那么你可以使用IRIX 5.3 的操作系统来制作一个启动盘文件,采用这种方法来制作启动盘文件也是很简单的。
1、根据你运行IRIX 系统的计算机的情况来编辑 $SIMOS_DIR/disks/build 目录下面的root-host.bld 文件。具体编辑请看用户手册。
2、运行make-host-root-disk 脚本文件,这个脚本同样需要你具体超级用户的权限。如果一切正确你会看到“SUCCESSFUL COMPLETION"”的字样。把文件移动到 $SIMOS_DIS/disk/build 下面,文件中同样包含了一个 root 分区 20 M 的交换分区。
4.在SimOs 上运行测试的项目
4.1 运行 SimOs
运行SimOs 之前,需要配置一些环境变量,你可以把这些环境变量添加到 .cshrc 文件中,如下:
host#>setenv SIMOS_DIR /usr/local/SimOS (or wherever you put it)
host#>setenv CPU SGI
host#>setenv TCL_LIBRARY $SIMOS_DIR/build-files
host#>set path =$SIMOS_DIR/bin/$CPU $SIMOS_DIR/bin/ (把SimOs 所在的二进制文件添加到PATH 中)
如果在 SUN 的工作平台上,则环境变量 CPU 设置为SUN ,接下来需要创建 init.simos 文件,创建方法请参照用户手册。
4.2 例子工程
simos2.0-workloads.tar.gz 文件中有一些例子,可以让你测试操作SimOs,里面包含了一些可执行程序。
host#> cd $SIMOS_DIR
host#> gunzip simos1.0-workloads.tar.gz
host#> tar xvf simos1.0-workloads.tar
例子程序给我们提供了很好的测试SimOs 的环境,大家可以使用这些程序来测试一下SimOs 。
上文,从http://simos.stanford.edu 上翻译而来,有改动。