컴퓨터구조(4) - 프로세서(1)
‘컴퓨터 구조 및 설계’를 공부하여 정리한 내용입니다.
1. 서론
기본적인 MIPS 구현
-
앞서 컴퓨터 성능은 명령어 개수, 클럭 사이클 시간, 명령어 당 클럭 사이클 수(CPI) 에 의해 결정된다는 것을 알았다.
- 컴파일러와 명령어 집합 구조가 프로그램에서 필요한 명령어 개수를 결정하며, 여기에서는 신경 쓰는 부분이 아니다.
- 여기에서는 클럭 사이클 시간과 명령어당 클럭 사이클 수에 영향을 주는 프로세서의 구현 방법에 대해서 생각해보겠다.
-
이 장에서는 MIPS 명령어 중 일부를 지원한느 간단한 버전의 프로세서의 구체적인 형태를 살펴볼 것이다.
- 그리고 이 모델에 파이프라인 형태를 적용할 때 어떤 것을 고려해야하는 지에 대해서도 살펴볼 것이다.
- 이 부분을 공부하고 나면, 컴퓨터가 어떤 방식으로 명령어를 처리하는지에 대해서 실제적으로 다가오게 된다.
2. 논리 설계 관례
클러킹 방법론
-
신호를 언제 읽을 수 있고 언제 쓸 수 있는지를 정의하는 방법론이다.
- 이는 경쟁 상태(race condition)을 피하기 위한 방법이기도 하다.
- 쓰는 구간과 읽는 구간이 클럭이 움직이는 단계에서 나뉘어져 있다면, 적어도 읽고 쓰는 단계에서는 순서가 확실하게 생기기 때문에 문제를 핸들링하는 것이 훨씬 수월해진다.
-
에지 구동 클러킹
- 모든 상태 변화가 클럭 에지에서 일어나는 클러킹 방법
- 인가된(asserted): 신호가 논리적으로 높은 신호
- 비인가된(deasserted): 신호가 논리적으로 낮은 신호
- 1과 0은 주로 그 자리가 바뀌기도 한다. 이는 임베디드를 할 때 많이 볼 수 있는데, pullup 이벤트의 경우는 1일 때 비인가된, 그리고 0일 때가 인가된 상태이다. 그래서 다른 용어를 사용한다.
3. 데이터패스 만들기 & 4. 단순한 구현
아쉽게도…
-
이번에는 데이터패스를 만들고 단순히 구현하는 방식에 대해서 일체 다루지 않을 예정이다.
- 현재 시간이 없기 때문에..
- 추후 업데이트 하겠다.
내가 헷갈렸던 개념
- 싱글사이클 구현이란, 싱글사이클 시간안에 명령어 하나를 처리하도록 만드는 것이다.
- 싱글사이클의 경우는 사이클 개수는 줄겠지만, 필연적으로 모든 명령어의 처리시간이 가장 긴 시간이 소요되는 명령어의 처리시간을 따르게 된다.
- 이는 그것만으로도 굉장히 오버헤드가 든다.
- 그렇기 때문에 우리는 싱글사이클에 명령어가 처리되게 두는 것이 아니라 데이터패스의 스테이지를 나누어 클럭 하나마다 하나의 스테이지를 처리하게 한다.
- 또한 좀 더 복잡한 연산이 섞이게 되면 단일 사이클로는 더욱 처리하기가 힘들어진다.
- 여기에 우리는 이제 파이프라이밍이라는 기술을 사용해서 그 효과를 더욱 증대시키게 된다.
도움이 될만한 자료
- 아쉬운대로, MIPS 명령어를 사용하는 프로세서를 FPGA로 구동할 수 있도록 verilog(HDL)로 짜여진 코드를 공유하겠다.
- (디지털 시스템 디자인 기말 프로젝트)
- 거의 완벽히 교과서에 나오는 데이터패스와 유사하게 동작한다.
- 명령어는 10개 정도 지원한다
- Nexys 4 DDR Artix-7 FPGA Trainer Board Recommended for ECE Curriculum 구동 확인 완료
- Implementation of 32bits MIPS using Verilog
- 코드 설명 자료
- 아마 공부하면서 코드 설명 자료를 참고해서 각 부분이 어떻게 구현되어있는지를 본다면 좀 더 피지컬하게 의미가 나가올 수는 있을 것 같다.
Leave a Comment