一、实验内容
1、根据流水线的时间周期和功能段数,输入流水线的预约表;
2、求出延迟禁止表和冲突向量;
3、构造流水线状态转移图;
4、寻找最小等间隔调度;
5、寻找最佳调度,并给出最小平均延迟和流水线的最大吞吐率;
按此流水线调度方案,输入n个任务,画出时空图,求实际吞吐率(选作)
二、实验结果
最短等间隔:5
(没有时空图)
三、源码
package pproject0204;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;
import java.util.stream.Collectors;
public class project0204main {
static ArrayList<ArrayList<Integer>> A = new ArrayList<ArrayList<Integer>>();// 预约表
static int I;// 功能个数
static int J;// 节拍数
static String S;// 冲突向量
static ArrayList<String> L = new ArrayList<String>();// 记录状态图所有出现的向量
static ArrayList<int[]> M = new ArrayList<int[]>();// 记录前向量在向量集合位置,间隔节拍,转移到的向量
static ArrayList<ArrayList<Integer>> B = new ArrayList<ArrayList<Integer>>();// 记录前向量在向量集合位置,间隔节拍,转移到的向量
public static void Ytable() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入功能段数:");
int i = sc.nextInt();
I = i;
System.out.println("请输入周期数:");
int j = sc.nextInt();
J = j;
String[][] s = new String[i + 1][j + 1];
for (int in = 1; in < i + 1; in++) {
String st = "";
st += in;
s[in][0] = "s" + st;
}
for (int in = 1; in < j + 1; in++) {
String st = "";
st += in;
s[0][in] = st;
}
for (int in = 1; in < i + 1; in++) {
ArrayList<Integer> a = new ArrayList<Integer>();
System.out.println("请输入第" + in + "个功能1-7所用到的时段,1表示用0表示不用");
String st = sc.next();
int t = 0;
while (t < st