diff --git a/cachelab/Cache b/cachelab/Cache index a34c305..9581b91 100755 Binary files a/cachelab/Cache and b/cachelab/Cache differ diff --git a/cachelab/Cache.c b/cachelab/Cache.c index e27448b..9171c5f 100644 --- a/cachelab/Cache.c +++ b/cachelab/Cache.c @@ -595,8 +595,7 @@ UINT8 AccessDataCache(UINT64 Address, UINT8 Operation, UINT8 DataSize, UINT8 MissFlag = 'M'; UINT64 ReadValue = 0; - // 仅用于处理函数实现,实际不使用结果 - char _unused_L2Result; + char L2Result; // 检查命中 for (int i = 0; i < DCACHE_LINE_PER_SET; i++) { @@ -735,7 +734,7 @@ UINT8 AccessDataCache(UINT64 Address, UINT8 Operation, UINT8 DataSize, } // 先从L2加载新行到L1 - _unused_L2Result = LoadDataFromL2ToL1(Address, Set, replace_Line); + L2Result = LoadDataFromL2ToL1(Address, Set, replace_Line); DCache[Set].Line[replace_Line].Valid = 1; DCache[Set].Line[replace_Line].Tag = Tag; @@ -796,7 +795,7 @@ UINT8 AccessDataCache(UINT64 Address, UINT8 Operation, UINT8 DataSize, } // 先从L2加载新行到L1 - _unused_L2Result = LoadDataFromL2ToL1(Address, Set, replace_Line); + L2Result = LoadDataFromL2ToL1(Address, Set, replace_Line); DCache[Set].Line[replace_Line].Valid = 1; DCache[Set].Line[replace_Line].Tag = Tag; @@ -874,9 +873,7 @@ UINT8 AccessInstCache(UINT64 Address, UINT8 Operation, UINT8 InstSize, UINT8 HitLine; UINT8 MissFlag = 'M'; UINT64 ReadValue = 0; - - // 仅用于处理函数实现,实际不使用结果 - char _unused_L2Result; + UINT32 L2Result; *InstResult = 0; @@ -941,7 +938,7 @@ UINT8 AccessInstCache(UINT64 Address, UINT8 Operation, UINT8 InstSize, UINT8 replace_line = GetReplaceLineInst(set); // 从L2加载数据到I-Cache - _unused_L2Result = LoadInstFromL2ToICache(Address, set, replace_line); + L2Result = LoadInstFromL2ToICache(Address, set, replace_line); // 重新读取指令 switch (InstSize) { diff --git a/cachelab/Makefile b/cachelab/Makefile index ebeeec8..3f81f0d 100644 --- a/cachelab/Makefile +++ b/cachelab/Makefile @@ -9,7 +9,9 @@ LDFLAGS += LDLIBS += -lzstd -CPPFLAGS := -O3 -Wall -Wextra -Winline -Winit-self -Wno-sequence-point\ +CPPFLAGS := -Ofast -Wall -Wextra -Winit-self \ + -Wno-unused-function -fPIC -W -Wcast-qual -Wpointer-arith -Icbsl/include +#CPPFLAGS := -O3 -Wall -Wextra -Winline -Winit-self -Wno-sequence-point\ -Wno-unused-function -Wno-inline -fPIC -W -Wcast-qual -Wpointer-arith -Icbsl/include #CPPFLAGS := -g @@ -20,7 +22,7 @@ objects = Cache.o CacheHelper.o getopt.o cbsl/src/buffer.o cbsl/src/file.o cbsl/ all: $(PROGRAMS) Cache : $(objects) - gcc $(CPPFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) + icpx $(CPPFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) rm -f $(objects) clean: