?? asscache.java
字號:
public class AssCache {
Cache[] assCache=new Cache[4];//4 Cache Block
public AssCache() {//初始化
for(int i=0;i<4;i++) {
assCache[i]=new Cache();
}
}
public boolean isnotfull()//not full
{//judge the cache set is full or not
boolean flag=false;
for(int i=0;i<4;i++) {
if(assCache[i].block==' ') {
flag=true;
break;
}
}
return flag;
}
/*judge hit or not*/
public boolean ishit(char c) {
boolean flag=false;
for(int i=0;i<4;i++) {
if(assCache[i].block==c) {
flag=true;
break;
}
}
return flag;
}
public void hitopt(char c) {//hit operation
for(int i=0;i<4;i++) {
if(assCache[i].block==c)
assCache[i].age=0;
else if(assCache[i].age>=0)
assCache[i].age=assCache[i].age+1;
}
}
public int lruseq()
{//找到最久未使用的塊的序號
//Cache temp=new Cache();
int seq=0;
for(int i=1;i<4;i++) {
if(assCache[seq].age<assCache[i].age)
seq=i;
}
return seq;
}
public int findlocation(char c) {//找到c所在的cache塊
int temp=0;
for(int i=0;i<4;i++) {
if(assCache[i].block==c) {
temp=i;
break;
}
}
return temp;
}
public void place(char c) {//將一個塊調入空的cache
for(int i=0;i<4;i++) {
if(assCache[i].block!=' ')
{//未使用的最長時間+1
assCache[i].age=assCache[i].age+1;
}
}
for(int i=0;i<4;i++) {
if(assCache[i].block==' ')
{//選擇一個空cache將內存調入
assCache[i].block=c;
assCache[i].age=0;
break;
}
}
}
public void replace(char c,int seq) {
assCache[seq].block=c;
assCache[seq].age=0;
for(int i=0;i<4;i++) {
if(i!=seq)
assCache[i].age=assCache[i].age+1;
}
}
public String blocktoString() {
String temp="";
for(int i=0;i<4;i++) {
temp+=(assCache[i].block+" "+assCache[i].age+"\n");
}
return temp;
}
public String cache0bblock() {
return assCache[0].block+"";
}
public String cache1bblock() {
return assCache[1].block+"";
}
public String cache2bblock() {
return assCache[2].block+"";
}
public String cache3bblock() {
return assCache[3].block+"";
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -