<aside> 💡 IR
>> 현재 실행 중인 명령어를 저장하는 레지스터
Instrution Register
프로그램이 있다면 한 명령어를 실행하기 위해 여러 클럭을 사용하잖아?
여러개의 클럭이 넘어갈동안
명령어가 어딘가에 저장되어야 다음 수행이 가능하니
그 저장하는 역할을 IR이 한다.
여러개의 클럭에 걸쳐서 명령을 기억한다? 이거 그냥 FF잖아?
FF를 통해 명령어를 기억한다? 이거 그냥 FF명령4바이트를 넣어둔다는 뜻
이 넣어두는 레지스터를 IR이라고함
</aside>
<aside> 💡 근데 사실 단일 주기 명령어에선 IR이 필요없음
IR자체가 명령을 기억하는건데, 다중 주기 명령어에서 여러 클럭에 거쳐서 한개의 명령어를 실해앟려고 할 때 IR이 필요함.
그 이유는 다음 클럭이 오면 내가 이전에 무슨 명령어를 실행하다가 끝났는지 기억해야하기 때문에, IR을 함께 출력해야하는것이다
근데 CPI가 1인 단일주기명령어에서는 다음 명령어를 기억할 필요가 없잖아? 지금 명령어가 다음 명령어까지 이어질 필요 없이 한 클럭만에 끝나니까!
</aside>
<aside> 💡 명령어는 크게 operand가 2개냐 3개냐로 나눌 수 있다.
→ 입력 레지스터가 2개냐 3개냐?
</aside>
<aside> 💡 RTL ? 연산 과정을 코드처럼 표현한 문법
</aside>
클록 동작
FlipFlop데이터를 언제 읽고 쓸지를 결정하는 데 사용
"클럭"은 컴퓨터 시스템에서 모든 동작을 동기화하는 신호입니다.
"클럭 엣지에 결과를 래치"하는 것은 클럭 신호의 특정 순간에 데이터를 저장하거나 래치하는 것을 의미합니다.
→ (클럭의 상승 엣지를 의미함)
즉, 데이터를 언제 읽거나 쓸지를 클럭의 변화에 맞춰 결정합니다.
→ (FF를 말하는 것임)
조합 회로
진리표상태를 저장하지 않고 데이터 처리를 수행
이것은 데이터패스 내부에서 상태를 저장하지 않는 논리 회로를 의미입니다.
→ 즉, 내부 상태 없음
클록과 관련 없이 현재 입력에 기반하여 출력을 계산하는 역할을 합니다.
클럭과 래치 사이에서 데이터 처리를 담당합니다.
→ 즉, 클럭의 상승 기류에 맞춰 연산만 함
→ 현재 상승 기류와 다음 상승기류 사이에 연산결과를 전달하는 역할
연산 의미론
RTL프로세서의 동작을 정확하게 설명하고 명시화
RTL로 기술된 과정을 CPU가 동작할 수 있도록 명시한것
프로세서를 설계할 때 정확한 동작을 정의하는 것이 중요합니다.
이것은 명령어가 어떻게 실행되는지를 명확하게 설명하는 것을 의미합니다.
→ 즉 명세서
또한 비슷한 작업을 여러 번 반복하지 않도록 정확한 명세가 필요합니다.
→ 작업을 한번만 수행하도록 함
예를 들어, 명령어를 메모리에서 가져오고 다음 명령어의 주소로 프로그램 카운터(PC)를 증가시키는 작업은 반복되므로 한 번만 정확하게 정의하면 됩니다.