91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 131KB
    文件類型: .zip
    金幣: 2
    下載: 1 次
    發布日期: 2021-06-12
  • 語言: Python
  • 標簽: tomasulo??python??

資源簡介

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\

評論

共有 條評論