intro
컴퓨터 구조는 세가지로 정의된다.
ⓐ 내부 레지스터
- 사용할 하드웨어 자원을 정의하기
ⓑ instruction set
- 가능한 명령어 집합을 정의하기
ⓒ control unit
- 정의된 명령어들이 하드웨어 리소스상에서 제대로 작동하게끔 설계하기
위 세가지를 정의, 설계해야 컴퓨터가 이루어진다.
이번 포스팅에서는 '내부 레지스터 정의하기'를 공부해보자.
Computer Registers
레지스터를 정의한다는 것은, 내가 설계할 컴퓨터에서 사용할 하드웨어 리소스를 어떻게 관리할지 정하는 것이다.
16비트 컴퓨터는 레지스터가 아주 간단하다. 아래 그림은 16비트 컴퓨터의 레지스터 종류다.
Mano는 아래와 같이 정의했다.
*Morris Mano: 컴퓨터시스템구조 저자
- PC (program counter)
- AR (address register)
- IR (instruction register)
- TR (temporary register)
- OUTR (ouput register)
- INPR (input register)
- DR (data register)
- AC (accumulator)
이런 하드웨어 자원들, 즉 레지스터들은 BUS에 이런 방식으로 연결되어있다.
아래 그림을 보면 7개의 레지스터가 BUS에 달려 있다.
회로를 조금 더 자세히 설명해보겠다.
- 7개의 레지스터가 BUS에서 출력결과로서 달려 있으므로, BUS로 들어오는 selection signal은 최소 3개가 필요하다. 그림에서도 볼 수 있듯이 S0, S1, S2가 BUS로 들어오고 있다. 이 signal 값에 따라 0에서 6의 결과값이 선택될 수 있다.
- 맨 위 레지스터인 Memory unit에 붙어있는 control signal은 write, read다.
- 다른 레지스터들에 붙어있는 control signal로는 LD, INR, CLR (Load, Increment, Clear)이 많다.
- Instruction register에는 LD만 있다. 값이 변경되면 큰일나기 때문이다.
- 각 레지스터에는 clock이 연결되어있다. 클럭속도를 1GHz라고 하자(1초에 10억번씩 clock이 깜빡인다). 그럼 클럭이 켜진 상황에서 만약 LD라는 control signal이 켜져있는 상태라면, LD를 수행하게 된다. 즉, control signal이 타이밍에 맞게 발생해야 레지스터 연산이 제때제때 수행될 수 있다. 그래서 어떠한 control signal이 제시간에 잘 발생되는 것이 아주 중요한데, 이를 가능케 하는 'Control unit'이라는 것을 추후에 설계할 것이다. Control unit은 컴퓨터 구조를 정의하는 세가지 중 하나였음음을 기억하자. 곧 공부하게 될 것이고, 중요하다.
결론: 컴퓨터를 설계하기 위해서는 1.레지스터를 정의해야하고, 2.명령어집합을 정의해야 한다. 그리고 그 하드워어 자원(레지스터)상에서 정의된 명령어가 제대로 실행될 수 있도록 3.Control unit을 잘 설계해야 한다.
이번 포스팅에서는 이중 하나, '레지스터 정의'가 어떤 것인지 간단히 확인했다.
'컴퓨터구조 & OS' 카테고리의 다른 글
[컴퓨터구조] 16비트 컴퓨터 설계하기 - Control unit 설계 (0) | 2021.10.14 |
---|---|
[컴퓨터구조] 16비트 컴퓨터를 설계하자 - Instruction set 정의하기 (0) | 2021.10.13 |
[컴퓨터구조] 16비트 컴퓨터 설계하기 - 명령어 코드의 구조 | Instruction Codes (0) | 2021.10.12 |
[컴퓨터구조] Shift Micro-operations | 컴퓨터의 shift 연산 구조 | 하드웨어 (2) | 2021.10.12 |
[컴퓨터구조] Logic Micro-operations | 컴퓨터의 논리 연산 구조 | 하드웨어 (1) | 2021.10.11 |