이 프로젝트는 "컴퓨터 시스템에 대한 심층적 이해" 제3판의 지원 실험과 제가 작성한 노트에 대한 답변입니다. 실험 파일은 labs 디렉토리에 있으며 Lab Assignments에서 가져왔습니다.
모든 랩 파일과 CMU에서 제공하는 참조 문서가 포함되어 있으며, 제가 작성한 솔루션 파일도 포함되어 있습니다. 내 실험 환경은 Ubuntu 16.04 amd-64이며 소스는 모든 랩의 원본 파일을 저장합니다.
제가 쓴 메모는 다음과 같습니다.
여기에는 모두 C
언어 프로그래밍 질문인 비트 연산, 2의 보수 및 부동 소수점 숫자 등이 포함됩니다.
바이너리 폭탄을 분해하면 어셈블리 코드를 읽는 능력이 크게 향상될 수 있습니다.
이 실습에서는 주로 스택 무작위화, 실행 불가, 스택 오버플로, ROP 공격 등과 같은 스택 보호 방법을 다룹니다.
Architecture Lab에는 Y86-64
명령어 세트, SEQ 및 PIPE 구현, 프로그램 최적화가 포함되며 어셈블리 및 하드웨어 언어 HCL
에 익숙해질 수 있습니다.
본 실습은 CMU의 Cache Lab으로 대체되었습니다. Cache Lab이 더 어렵다는 점을 고려하여 먼저 이 실습을 진행해 보세요. 책의 5장과 6장을 바탕으로 캐시 미스를 제거하고 분기 예측 오류를 제거하기 위해 주로 루프 차단과 같은 방법을 사용하여 프로그램을 최적화했습니다.
파트 A에서는 캐시 시뮬레이터 작성이 필요하고, 파트 B에서는 행렬 전치 기능을 최적화하여 캐시 누락 횟수를 줄여야 합니다. 이 실습을 통해 캐싱에 대한 이해를 심화할 수 있습니다. 파트 A가 작성되었습니다.