Reference docs:

https://en.wikipedia.org/wiki/Scoreboarding

SSC_course_5_Scoreboard_ex.pdf

1, what is scoreboarding

A method to dynamically schedule pipelining in case of out-of-order execution when there’re no conflicts and hardware is available.

The reason it’s called scoreboarding, as shown below, is because the way it determines whether an action is ready to go is just like a scoreboard in baseball game.

2, principle

In a scoreboard, the data dependencies of every instruction are logged. Instructions are released only when the scoreboard determines that there are no conflicts with previously issued and incomplete instructions.

The logging process is not added as part of the instruction; the log is recorded during instruction pipeline processing, so we should think scoreboarding as part of the pipeline.

3, scoreboarding stages and each stage’s resposibilities

After fetching, instructions would go through 4 stages: issue, read, execute and write back.

1) issue

what to do here: Check which registers will be read and written by this instruction. Instruction would stall until current instructions intending to write to the same register are completed.

issue = ID + structure/WAW hazard check

2) read

what to do here: After an instruction has been issued and correctly allocated to the required hardware module, the instruction waits until all operands become available.

Read stage is to avoid RAW hazard. For read stage to go forward, Rj,Rk should both be Yes (meaning see below).

3) execute

what to do here: When all operands have been fetched, the functional unit starts its execution.

4) write back

what to do here: In this stage the result is about to be written to its destination register.

In this stage, functional unit should be idle; src1/scr2 registers shoule be available and dst register should be idle.

This stage needs to avoid WAR.

4, data structure

Scoreboarding maintains 3 status tables: instruction status, functional unit status and register result status.

One demo see below:

1) instruction status

Record which above 4 stage an instruction is in.

2) register result status

Record which functional unit would write to which register.

3) functional unit status

Each functional unit maintains 9 fields to indicate its status:

  • Busy: Indicates whether the unit is being used or not
  • Op: Operation to perform in the unit (e.g. MUL, DIV or MOD)
  • Fi: Destination register -- which register would be written
  • Fj,Fk: Source-register numbers —src1 and src2 register number
  • Qj,Qk: Functional units that will produce the source registers Fj, Fk – which operation will generate scr1 and scr2 results
  • Rj,Rk: Flags that indicates when Fj, Fk are ready for and are not yet read. – whether src1 and src2 register is available

An example would look like this:

See reference pdf for details.

5, algorithm in function mode

Each stage of scoreboarding can be implemented as followed:

1) issue

 function issue(op, dst, src1, src2)
wait until (!Busy[FU] AND !Result[dst]); // FU can be any functional unit that can execute operation op

-- 条件:(1) 当前FU没被使用; (2) 无其他活跃指令操作同一目的寄存器, 即无WAR风险

    Busy[FU] ← Yes;
Op[FU] ← op;
F

i

[FU] ← dst;
F

j

[FU] ← src1;
F

k

[FU] ← src2;
Q

j

[FU] ← Result[src1];
Q

k

[FU] ← Result[src2];
R

j

[FU] ← Q

j

[FU] == 0;
R

k

[FU] ← Q

k

[FU] == 0;
Result[dst] ← FU;

2) read

 function read_operands(FU)
wait until (R

j

[FU] AND R

k

[FU]);
-- 条件:Rj和Rk均为Yes
R

j

[FU] ← No;
R

k

[FU] ← No;

3) execute

 function execute(FU)
// Execute whatever FU must do

4) write back

 function write_back(FU)
wait until (∀f {(F

j

[f]≠F

i

[FU] OR R

j

[f]=No) AND (F

k

[f]≠F

i

[FU] OR R

k

[f]=No)})
-- 条件:FU可使用, scr1/scr2可使用, dst可使用
foreach f do
if Q

j

[f]=FU then R

j

[f] ← Yes;
if Q

k

[f]=FU then R

k

[f] ← Yes;
Result[F

i

[FU]] ← 0; // 0 means no FU generates the register's result
Busy[FU] ← No;

Again, above algorithm may look odd, they completely make sense we going through the pdf.

6, typical scoreboarding structure

2 FP multiply, 1 FP adder, 1 FP divider, 1 FP integer

7, scoreboarding limitation

(1) stall on name dependencies

For example,

MULT F4, F2, F2

ADDD F2, F0, F6

Actually above instructions are the same as:

MULT F4, F2, F2

ADDD F8, F0, F6

but scoreboadring cannot tell. To scoreboarding, this is a WAR hazard.

And it’s not difficult to conclude that scoreboarding may also see a name dependencies case as a WAW hazard.

(This limitation can be covered in Tomasulo’s Reservation Station/Renaming mechanism.)

(2) no forwarding hardware

(3) instruction parallelism is limited by the number of function units.

scoreboarding的更多相关文章

  1. Data Dependency

    https://en.wikipedia.org/wiki/Data_dependency (There’s some misleading expression on the flow/data d ...

  2. Java:并发笔记-05

    Java:并发笔记-05 说明:这是看了 bilibili 上 黑马程序员 的课程 java并发编程 后做的笔记 4. 共享模型之内存 本章内容 上一章讲解的 Monitor 主要关注的是访问共享变量 ...

随机推荐

  1. Windows内核驱动开发入门学习资料

    声明:本文所描述的所有资料和源码均搜集自互联网,版权归原始作者所有,所以在引用资料时我尽量注明原始作者和出处:本文所搜集资料也仅供同学们学习之用,由于用作其他用途引起的责任纠纷,本人不负任何责任.(本 ...

  2. django中related_name的作用和用法

    其实可以就理解为,一对多关系拿对象的解决 可以把引用理解为主从关系 主引用从,即一对多 , 注意外键字段是放在多的一端的,比如一个班级class 有很多同学 students,那么就在students ...

  3. jsp-request应用1

    用jsp写表单提交数据时需要用到request去读取数据,表单代码如下: <form action="requestresult.jsp" method="post ...

  4. 消息中间件kafka学习记录

    目录 1. 概述 2. 环境准备 3. 命令行常用命令 4. java api实现 1. 概述 Apache Kafka是一个分布式消息系统,凭借其优异的特性而被广泛使用. 高性能:O(1)复杂度消息 ...

  5. HTML和CSS标签命名规则

    1.Images 存放一些网站常用的图片: 2.Css 存放一些CSS文件: 3.Flash 存放一些Flash文件: 4.PSD 存放一些PSD源文件: 5.Temp 存放所有临时图片和其它文件: ...

  6. Codeforces Round #525 D - Ehab and another another xor problem /// 构造

    题目大意: 本题有两个隐藏起来的a b(1<=a,b<=1e30) 每次可 printf("? %d %d\n",c,d); 表示询问 a^c 与 b^d 的相对大小 ...

  7. Hive中SQL查询转换成MapReduce作业的过程

  8. [java]反转单项链表,用O(n)时间和O(1)空间

    链表数据结构 public class ListNode { public int val; public ListNode next; public ListNode(int x) { val = ...

  9. vagrant centos lamp小记

    更新包 sudo yum -y update vagrant centos 默认语言好像是德语,看不懂,需要更换为 en_US [vagrant@localhost ~]$ locale LANG=d ...

  10. CSIC_716_20191101【编程语言、变量、垃圾回收机制】

    编程语言分类:机器语言.汇编语言.高级语言. 机器语言:机器能直接识别的程序语言或指令代码(二进制指令),勿需经过翻译,每一操作码在计算机内部都有相应的电路来完成它 汇编语言:比机器语言略高级,用英文 ...