안녕하세요, WH입니다.
프로세스 1과 프로세르 2를 통해 데이터 패스를 만들어 보았는데요,
반드시! 반드시! 그 내용을 알고 있어야 합니다!
왜냐고요? 이번 글이 끝난 뒤에, 다음번에 동작에 대해서 알려면
반드시 이해해야해요
2022.02.09 - [컴퓨터 구조론( MIPS )] - 프로세서 1 - R-type 명령어 데이터 패스, 명령어 인출과정
2022.02.09 - [컴퓨터 구조론( MIPS )] - 프로세스 2- Load or Store 명령어, branch 명령어
여러분 잘 복습하고 오셨으리라 믿습니다.
이번에는 ALU와 주 제어 유닛에 대해서 설계해 볼거에요
ALU 제어
보다 보니까 ALU는 연산을 해주는 애라는 걸 알겠어요. 그쵸? 근데 연산을 좀 많은 종류를 하잖아요? 그럼 ALU가 어떤 연산을 하는지 알아야겠죠? 4비트의 입력 신호로 6가지의 신호를 준답니다.
ALU가 어떻게 사용되었었는지 잠깐 review 좀 해볼까요? lw, sw 명령어에서는 메모리 주소 계산을 위한 덧셈용이 었습니다. R-type 명령어의 경우 하위 6비트 funct 필드에 따라 add, subtract, and, or, slt 연산을 했었고요. 마지막으로 분기 명령어, beq 의 경우에는 같은 값이라면 빼는 빼기 연산을 했었답니다. 한 눈에 보기 좋게 정리해 볼까요?
그럼 이 ALU 제어 신호는 어떻게 만들어 질까요? 주 제어 유닛이 ALUOp 비트를 생성하고, ALU 제어 유닛은 ALUOp 비트를 입력 받아 ALU를 제어하는 실제 신호를 만들어 내는 거랍니다. 2 비트 ALUOp 필드와 6비트 funct 필드를 맵핑 하는 방법에는 많은 방법이 있겠죠? 사실 사용되는 것이 일부이기 떄문에 이들을 모아서 논리회로를 사용할 수도 있겠지요. 이 두가지 입력 필드 값에 어떻게 설정되었는 가를 보는 것은 큰 도움이 될 거에요. 이런 표를 진리표( truth table )라 부르지요. 진리표가 만들어진 다음, 최적화 후에 게이트를 만드는데, 뭐 그렇다구요.
ALU 제어 신호를 위한 진리표
주 제어 유닛 설계
명령어의 종류 중 3 가지 명령어에 대해 다루고 있었죠? 해당 명령어는 아래와 같은 그림으로 표현됩니다.
그림에 써있지만, 중요한 사실은 짚고 넘어가도록 하겠습니다.
1. opcode라 불리는 op 필드는 항상 비트 31:26 에 포함됩니다. 이 필드를 Op[5:0]라고 부릅니다
2. 읽을 레지스터 두 개는 항상 rs, rt 필드에 의해 지정됩니다. rs, rt 필드는 비트 25:21, 20:16에 나타납니다. R-type과 rt, rs가 같을 때 분기 및 저장 명령어에 해당합니다.
3. 적재 명령어와 저장 명령어를 위한 베이스 레지스터는 항상 25:21( rs )에 있습니다.
4. rs, rt 같을 시 분기, 적재, 저장 명령어를 위한 16비트 변위는 항상 비트 15:0 에 있습니다.
5. 목적지 레지스터는 적재 명령 시 비트 20 :16( rt ) 에, R-type 명령 시 비트 ( 15:11 )에 있습니다. 쓰기가 행해진다면 레지스터 번호로 명령어의 어느 필드를 사용할지 선택하기 위한 멀티플렉서가 필요합니다.
5번에 잠깐 쓰여 있지만, 제어선에 관해 역할을 알고가야할 필요가 있겠죠?? 아래는 멀티플랙서가 포함된 데이터 패스입니다. 파란선이 제어 신호를 뜻하는데 해당 신호의 역할에 대해서 알아봅시다.
7개의 제어 신호 기능
참고로 제어 유닛은 제어신호 중 PCSrc 만을 제외하면 opcode 필드만 보고 결정할 수 있답니다. PCSrc 는 branch on equeal 이며 ALU의 Zero 출력이 참일 경우만 인가되어야 해요. 무슨 말이냐고요? 그냥 넘어가도 된다는 소립니다.
이번 글은 여기까지 입니다. 다음 글에서는
데이터패스 동작에 대해서 다뤄보도록 하겠습니다. 오늘도 즐거운 하루되세요 WH였습니다.
'컴퓨터 구조론( MIPS )' 카테고리의 다른 글
프로세서 5 - 파이프라이닝 개요 (0) | 2022.02.10 |
---|---|
프로세서 4 - 데이터 패스 동작 (0) | 2022.02.10 |
프로세서 2- Load or Store 명령어, branch 명령어 (0) | 2022.02.09 |
프로세서 1 - R-type 명령어 데이터 패스, 명령어 인출과정 (0) | 2022.02.09 |
명령어 : 컴퓨터 언어 8 ( feat. MIPS 어셈블리 코드 예시 ) (0) | 2022.02.09 |