资源简介
python+tkinter实现Tomasulo算法的可视化模拟。
代码片段和文件信息
import sysos
import time
import tkinter as tk
from tkinter import ttk
import threading
# 指令类
# name为指令名称,opr1~opr3为操作数
class instruction:
def __init__(selfnameopr1=‘None‘opr2=‘None‘opr3=‘None‘):
self.name=name
self.opr1=opr1
self.opr2=opr2
self.opr3=opr3
self.started=False
self.executed=False
self.written=False
# 指令状态类
# number指令序号,op该指令操作类型,start_time流出时钟,execute_time执行时钟,started是否流出,executed是否进入执行阶段,written是否写会
class ins_condition:
def __init__(selfnumberopexecute_timestart_time=0):
self.number=number
self.op=op
self.start_time=start_time
self.execute_time=execute_time
self.started=False
self.executed=False
self.ex_Rb_number=‘None‘
self.written=False
# 保留站类
# Op指示该保留站可执行何种类型的操作,cur_Op指示当前该保留站正在执行的操作类型,QjQk将产生操作数的保留站号,VjVk操作数的值,
# Busy为yes表示该保留站“忙”,A仅load和store指令有该项,表示立即数或计算后的地址,number为该保留站序号
class reservation_station:
def __init__(selfOpnumbercur_Op=‘None‘Qj=‘None‘Qk=‘None‘Vj=‘None‘Vk=‘None‘Busy=FalseA=‘None‘):
self.Op=Op
self.cur_Op=cur_Op
self.number=number
self.Qj=Qj
self.Qk=Qk
self.Vj=Vj
self.Vk=Vk
self.Busy=Busy
self.A=A
self.started_time=‘None‘
self.result=‘None‘
def finis(self):
self.Busy=False
self.cur_Op=‘None‘
self.Qj=‘None‘
self.Qk=‘None‘
self.Vj=‘None‘
self.Vk=‘None‘
self.A=‘None‘
self.started_time=‘None‘
self.result=‘None‘
class register:
def __init__(selfnameval=0):
self.name=name
self.val=val
#检查对应操作是否有保留站可用,可用则返回相应保留站号,否则返回-1
def available_reservation_station(op):
if op==‘L.D‘:
for i in range(13):
if not Reservation_station_state[i].Busy:
return i
elif op==‘ADD.D‘ or op==‘SUB.D‘:
for i in range(36):
if not Reservation_station_state[i].Busy:
return i
elif op==‘DIV.D‘ or op==‘MUL.D‘:
for i in range(68):
if not Reservation_station_state[i].Busy:
return i
else:
return -1
#用到的寄存器对应的编号
Regs={‘F0‘:0‘F2‘:2‘F4‘:4‘F6‘:6‘F8‘:8‘F10‘:10‘R2‘:11‘R3‘:12}
#不同指令对应的延迟时间
Delay_time={‘L.D‘:2‘ADD.D‘:3‘SUB.D‘:3‘DIV.D‘:41‘MUL.D‘:11}
try:
ins=open(‘instructions.txt‘)
except baseException:
print(‘未打开相应指令文本文件!‘)
os._exit(0)
ins=ins.readlines()
# 总指令数量
instruction_quantity=len(ins)
#指令表
instructions=[]
for x in ins:
x=x.replace(‘\t‘‘‘)
x=x.replace(‘ ‘‘‘)
i=0
while not(x[i-1]==‘.‘and x[i]==‘D‘):
i+=1
i+=1
op=str(x[1:i])
j=i+1
while x[j]!=‘‘:
j+=1
op1=str(x[i:j])
j+=1
if x[j]<=‘9‘ and x[j]>=‘0‘:
#load指令
#op3存立即数
i=j
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 175241 2019-05-20 17:48 data\Readme.docx
文件 109 2019-05-16 19:32 data\instructions.txt
文件 17418 2019-05-20 17:57 data\tomasulo_simulation.py
目录 0 2019-05-20 17:49 data\
- 上一篇:TF-ID算法实现Python源码
- 下一篇:python pmw模块
相关资源
- python实现SGBM图像匹配算法
- python实现灰度直方图均衡化
- scrapy_qunar_one
- Python学习全系列教程永久可用
- python简明教程.chm
- 抽奖大转盘python的图形化界面
- 双边滤波器实验报告及代码python
- python +MYSQL+HTML实现21蛋糕网上商城
- Python-直播答题助手自动检测出题搜索
- OpenCV入门教程+OpenCV官方教程中文版
- Python 串口工具源码+.exe文件
- Python开发的全栈股票系统.zip
- Python操作Excel表格并将其中部分数据写
- python书籍 PDF
- 利用python绘制散点图
- python+labview+No1.vi
- 老男孩python项目实战
- python源码制作whl文件.rar
- python3.5可用的scipy
- PYTHON3 经典50案例.pptx
- 计算机科学导论-python.pdf
- python模拟鼠标点击屏幕
- windows鼠标自动点击py脚本
- 鱼c小甲鱼零基础学python全套课后题和
- Python 练习题100道
- Practical Programming 2nd Edition
- wxPython Application Development Cookbook
- python 3.6
- Python 3.5.2 中文文档 互联网唯一CHM版本
- python3.5.2.chm官方文档
评论
共有 条评论