/Y86Simulator

The project of lecture ICS. This Y86 is multithreading.

Primary LanguageC++

Y86 Pipeline

特点

  • 五个阶段随意组合
  • 使udp和tcp通信

注意

每个时钟周期,每个流水线从缓冲区读取并执行指令 并将结果写到下一条流水线的缓冲区

Fetch

先进行pcUpdate
从指令存储器中取出各个值,将其写到D层

Decode

存放8个寄存器 读取寄存器,处理冒险,将其写到E层

Execute

ALU计算,将其写到M层

Memory

存放memory 读写内存,写到WriteBack层

Writeback

写回寄存器

时钟线程

在master的应用程序上 等待五个阶段发送已完成信号 然后再等待固定时间,发送时钟信号。

所有的tcp连接

client server cid
Fetch WriteBack 1
Fetch Memory 2
Fetch Decode 3
Decode Execute 4
Decode Memory 5
Decode Writeback 6
Execute Memory 7
Memory Writeback 0

和时钟的连接

client server
fetch clock
decode clock
execute clock
memory clock
writeback clock

Y86类TCP连接

将pool(32位)的指定位置为1,有master检测,如果前8位全为1,向所有客户端发送开始命令

Y86 建立连接

点击开始连接后 每个client每3秒在指定的上端口广播,表明自己连接的状态和自己跑的阶段
格式

{
    "id":2,
    "FLevel":true,
    "DLevel":true,
    "ELevel":true,
    "MLevel":true,
    "WLevel":false,
    "pool":255
}

master检测所有连接是否完成,完成以后发送广播开始

{
    "id":3   
}

开始之后监听每个阶段的是否完成,如果完成广播这一个周期结束

{
    "id":4,
    "step":23
}