PTLsim User Manual Notes

19
PTLsim User Manual Not es 2008.07.18

description

PTLsim User Manual Notes. 2008.07.18. 第一部分. PTLsim User Guide. 1.Introduction. 两种版本 Classic version :单线程, userspace linux application PTLsim/X :支持 full system simulation ,多处理器,多线程( SMT 模型),周期精确的虚拟设备时序模型, deterministic time dilation. 4.Code Base. C + C++ 只用到了 C++ 的模板,类,操作符重载 - PowerPoint PPT Presentation

Transcript of PTLsim User Manual Notes

Page 1: PTLsim User Manual Notes

PTLsim User Manual Notes

2008.07.18

Page 2: PTLsim User Manual Notes

第一部分

PTLsim User Guide

Page 3: PTLsim User Manual Notes

1.Introduction

• 两种版本– Classic version:单线程, userspace linux a

pplication– PTLsim/X:支持 full system simulation,多处理器,多线程( SMT模型),周期精确的虚拟设备时序模型, deterministic time dilation

Page 4: PTLsim User Manual Notes

4.Code Base

• C + C++

• 只用到了 C++的模板,类,操作符重载• 使用了一个自己的模板库 SuperSTL取代 C

++的 STL

• 暂时跳过

Page 5: PTLsim User Manual Notes

5.X86 Instructions

• 暂时跳过• 讲了一些 x86相关的结构

Page 6: PTLsim User Manual Notes

6.Decoder Architecture and Basic Block Cache

• 暂时跳过

Page 7: PTLsim User Manual Notes

7.PTLsim Support Subsystems

• 讲了一些 PTLsim支持的特性,如内存管理,Uop应用,垃圾收集等

• 粗略浏览

Page 8: PTLsim User Manual Notes

8.Statistics Collection and Analysis

• 统计信息可以通过设置 -stats filename来获得,输出的将是一个二进制的文件,通过 PTLstat来将该文件转换为用户可以阅读的格式

• 建议在 stats.h中添加自己的 counters,这样就能利用 PTLsim的统计功能,一些特殊的注释可以用来帮助输出格式化的信息

• 主要讲了一些 PTLsim的统计信息的工具,利用这些工具能够方便的输出图形,表格等。 PTLstats使用方法。

Page 9: PTLsim User Manual Notes

9.Benchmarking Techniques

• 讲了怎样使用 benchmark, PTLsim的方法是在benchmark的源码中添加 ptlsim的函数调用以切换模拟态和 native态

• 不能用 IPC来比较 x86和 RISC的处理器性能,甚至不能用 IPC来比较 x86处理器之间的性能,应该采用实际完成的模拟周期数比较性能。

• PTLsim不支持跳过 X条指令执行接下来的 N条指令,可以结合 trigger point和 snapshot的方法实现之。

• Sequential core速度比 ooo core要快,不计算

Page 10: PTLsim User Manual Notes

第二部分

PTLsim Classic: Userspace Linux Simulation

Page 11: PTLsim User Manual Notes

10.Getting Started with PTLsim

• 配置文件可以存在 /home/username/.ptlsim下

• 选项:– -logfile filename– -loglevel level– -startlog cycle– -startlogrip rip

• PTLsim维持一个事件的缓冲环,通过 -ringbuf来 enable

Page 12: PTLsim User Manual Notes

11.PTLsim Classic Internals

• PTLsim有自己的内部内存管理和线程管理,不使用标准库。将自己 inject到其它进程中以控制它们。与 Linux内核联系紧密。

• 在main()开始前先调用 ptlsim_preinit()建立自己的内存管理和线程环境

• 实现的方法: fork(),然后用子进程 exec()• Simulation:main()调用 init_config()读入配置• Ooo core包括扩展的调试和完整性检查的断言。也可用 g

db调试。• 需要将 CPU保持在某个固定的频率上(有的 CPU会自动降频)

• 也可手动发送 linux信号使 PTLsim切换运行模式

Page 13: PTLsim User Manual Notes

11.PTLsim Classic Internals

• Address Space: SPAT– 64位机器上,共 64KB的 bitmap( 2^19位)可寻址每页 4KB共 2GB的空间,顶层共有 128K个这样的 bitmap,加起来寻址 48bit的虚拟内存空间。

– 32位机器上,只有一个 128KB的 bitmap( 2^20位),寻址每页 4KB共 4GB的空间

• 当从 native模式切换成 simulation模式时, SPAT要通过 resync_with_process_maps()函数与系统的内存映射 /proc/self/maps保持一致(不同的内核版本,其内存映射文件格式也不同,可能需要修改 resync_with_process_maps()函数)。

Page 14: PTLsim User Manual Notes

第三部分

PTLsim/X: Full System SMP/SMT Simulation

Page 15: PTLsim User Manual Notes

12.Background

• Full system simulator可分为两种:– Hypervisor:在本机上执行大部分 unprivileged指令,模拟 privileged指令以保持虚拟机之间的隔离,使虚拟机与真实的 CPU之间几乎无区别。例如 Xen, VM Ware

• VM Ware使用 x86—x86的二进制转换技术,对于 I/O密集型的负载,性能损失严重。

• ESX是 VM Ware在 Guest OS下执行的 Hypervisor, GSX和Workstation则是用户空间的前端程序,包含各种虚拟设备驱动和二进制翻译器

• Virtual PC和 Parallels和 VM Ware类似• KVM是 linux内核 2.6.19之后集成的一个 hypervisor,需要

VT技术的支持。性能好。

Page 16: PTLsim User Manual Notes

12.Background

• Full system simulator:– Simulator:使用解释器执行周期精确的 x86指令,不在 native CPU上执行任何 guest指令。

• Bochs:开源,接近 RTL级描述,支持从 16位到 x86-64的指令。慢,不支持周期精确的 ooo x86模型

• QEMU:使用 x86-x86的二进制翻译,属于 hypervisor的范畴

• Simics:闭源,商业,同样使用 x86-x86的二进制翻译,不支持 x86指令以下的周期精确模型

• SimNow: AMD x86-64模拟器

Page 17: PTLsim User Manual Notes

12.Background

• Xen:– OS必须经过修改以支持一种新的芯片组。这种修改主要考虑页表和中断控制器。

Page 18: PTLsim User Manual Notes

13.Getting Started with PTLsim/X

• ptlctl:在模拟结束后必须给出相应的命令继续执行程序,否则程序将停止,这样就会造成无法输入命令的死锁状态。

• 也可以从别的 console输入命令• 可以从一个 snapshot开始模拟• 时间问题:提供了一系列修正时间膨胀问题的参数

Page 19: PTLsim User Manual Notes

14.PTLsim/X Architecture Details

• PTLsim/X三组件: Xen Modification, PTLsim Monitor, PTLsim Core– Xen Modification