CS/컴퓨터 구성

[11주차 1강]

JWonK 2021. 11. 10. 00:35
728x90
반응형

5장 내용이 가장 핵심 - 컴퓨터의 가장 기본적인 구조와 디자인

컴퓨터의 구조는 internal 레지스터, timing 그리고 control structure, set of instructions에 의해 정의된다고 한다.

일반적인 desk top의 보드를 뜯은 것

 

Instruction Codes 

보통 우리가 컴퓨터의 동작을 일련의 microoperations동작이라고 한다. microoperation들이 합쳐져서 하나의 Instruction이 되고 Instruction이 합쳐져서 하나의 Program이 완성이 된다.

 

ex) ADD Instruction에 여러가지의 microopeation들로 구성되어있다.

위에서 배운 대로 하나의 Instruction은 여러 개의 microoperations으로 구성 되어 있고, 

Instruction은 데이터와 함께 메모리에 저장 되어 있다. Instruction들은 여러 개의 종류가 있는데 이것을 Opeartion Code로 구분할 수 있다. ex) Add, Sub, Mul, Div 등 여러 개의 Instruction이 OP Code에 따라 구분

 

Memory의 크기는 Word의 개수에 따라 결정이 된다. 만약에 Word가 4096개로 구성되어있다면 12 bit의 주소가 필요하다. 4096개의 단어가 16비트짜리 단어라고 한다면 (word는 16비트로 이루어져있다) 주소의 길이는 12비트면 된다. 그럼 4비트의 공간이 남는다. 그게 OP 코드를 구성하는데 사용 될 수 있다는 것이다. 그럼 16개의 instruction을 이용할 수 있다.

 

아래의 모양을 통해 정리하자면 OP코드는 4개가 필요하고 Address Field는 12개가 필요하다. 그래서 총 한 단어를 16비트로 이룰 수 있다. 몇 가지 opeartion중에 Clear AC와 increment AC는 address field를 필요로 하지 않는다.

 

OP Code와 Address Field를 제외하고 가장 왼쪽에 하나의 비트를 통해 직접 주소이냐, 간접 주소이냐를 나타낼 수 있다

직접과 간접의 차이는 뭐냐? 직접 주소는 0으로 표현하고 직접 주소일 경우 Address에 데이터를 저장한 주소값 그대로 나타내고 간접 주소는 1로 표현하며 데이터에 접근하려면 Address에 있는 위치로 이동한 후 그 위치에 존재하는 주소로 다시 이동해야 데이터에 접근할 수 있다. (오른쪽 그림) 

 

데이터가 존재하는 실제 주소를 우리는 Effective address라고 한다.

 

또 다른 방법으로 Immediate operand가 존재하는데 우리가 필요한 데이터를 즉시 확인할 수 있는 방법이다. 주소를 참조하는 경우 명령 뒤에 (ex) ADD) 있는 주소로 이동하여 확인해야하는데 이와 같은 방법은 명령 뒤에 바로 데이터값을 확인할 수 있다.

 

모든 Instruction들은 메모리에 순차적으로 깔려져 있다. 그것들을 하나씩 가져와서 Instruction register에 집어넣어두고 decoding작업, OpCode로 분석하는 작업을 한다. 그런데 어디서 정보를 가져올 것이냐? 이런 정보들은 Program Counter에서 제공을 한다. 이런 Program Counter도 Register 종류 중 하나인데 역할이 다음에 실행시킬 Instruction 주소를 가지고 있는 것, branch Instruction은 조건에 따라 다른 위치로 이동시킬 수 있는 Instruction이다.

 

우리가 사용할 Register들의 표 5-1

IR : 메모리에서 읽어 온 Instruction주소를 가장 먼저 이곳에 저장한다. 당연이 bit는 워드의 크기와 같은 16비트(하나의 Instruction 길이와 동일)

PC : 다음에 실행시킬 Instruction주소를 저장하고 항상 주소 정보를 다루기 때문에 12비트

만약 위 그림처럼 16비트로 이루어진 4096개의 단어를 저장하는 memory가 있다면 이것에 대한 정보를 저장, 연산 등등 많은 기능을 수행하는 Instruction이 존재할 것이다. 근데 이러한 Instruction을 연결할 때 어떻게 연결하나면 Common Bus System으로 연결한다. 이 부분에서는 이게 뭔지 알아볼 것

 

Common Bus System

INPR을 제외한 7개의 Register를 연결한다 + 메모리 (총 8개)

INPR은 BUS를 사용할 필요가 없다. 

 

아래 그림을 통해 자세한 설명

Bus는 한 순간에 하나에 데이터만 저장할 수 있다. 만약 한 순간에 데이터를 2개 이상 넣는 경우 crash난다고 한다.

버스를 모두 한 번에 사용항 수 없기에 언제 사용하는지 정해야하는데 버스에 연결된 select단자를 통해 결정한다. 

ex) S2 - 1, S1 - 1, S0 - 1, ---> 7과 연결된 register 사용 

 

위 구조를 살펴보자.

맨 위에 Memory unit - 읽기, 쓰기 작업을 수행 하기 때문에 write, read를 통해 연결, 작업을 수행할 address는 

특수한 path경로를 통해 전달 받는다.

 

* 간단한 구조를 가진 Register는 IR, Load단자 하나만 있는 존재

* 다른 단자들은 예를 들어 PC는 Load단자, increment단자, clear단자 등 많은 단자들이 존재

* 버스에서 AC로 바로 연결이 되지는 않는다. AC로 데이터값을 전달 해주려면, 우선 DR로 데이터값을 보내고 DR과 연결된 특수한 경로를 통해 Adder and Logic으로 들어간다. 그리고 안에서 작업을 수행한 후 AC로 전달된다.

* INPR은 버스 사용 x

* OUTR은 버스로 전달받고 외부로 출력시킴

 

-----------------강의 35분 중요, 무조건 다시 듣기-----------------------

간단한 register vs 기능이 많은 복잡한 register

Fig 2-7은 4비트짜리 그림이다. IR은 16비트짜리이므로 일부만을 보여주고 있는 것, 앞에서 이미 배운 그림

Fig 2-11은 DR, Load단자, Increment단자, Clear단자가 있는 조금 더 기능이 존재, 이 그림 또한 일부만을 보여준다

5장에서 배우는 instruction은 3가지 유형으로 나눌 수 있다.

첫 번째, memory reference instructinons, 메모리 참조 ex) AND, Add, Load, Store, 간접 주소 7개 + 직접 주소 7개 

총 14개, 이것과 관련된 OP Code는 000부터 110까지 존재한다. 111은 아래 그림과 연관이 있다. 여기에 직접 / 간접 선택할 수 있어서 총 14개

두 번째, register reference instructions, 얘는 항상 0111로 시작, 이것은 register안에서 모든 작업이 끝날 수 있음

ex) clear, compl, circulate, skip

세 번째, I-O instructions, 얘는 항상 111, 입출력 instructions

 

만약 OP Code가 111인가? 

111이 아니다 ---> memory instruction

111이다 ---> I(15)가 0이면 register, Inst

           ---> I(15)가 1이면 I-O, Inst

3가지 유형을 좀 더 세부적으로 확인하는 표

위에 memory reference는 직접 주소 / 간접 주소 각각 7개씩 

Reg Inst.는 0111이었으므로 가장 왼쪽 비트가 7

I-O는 1111 -> F

만약 Instruction의 기능 중 Arithmetic, Move, Control, I/O 기능을 모두 만족한다면 그 Instruction은 Complete한 Instruction이라고 말한다. 하지만 Complete한 Instruction이면 효율적인 Instruction일까? 그것은 아니다

Efficiency는 Instruction이 가지는 기능을 이용하여 또 다른 기능을 수행할 수 있을 때 Efficiency하다고 말한다.

예를 들어, Add&Shift 기능이 있는 것을 이용하여 Multiplication을 수행한다면 Efficiency한 Inst가 되는 것

Timing and Control

Control은 2가지 방식이 존재

1. Hardwired : Hardware적인 방식, decoder, gate등을 이용, 최적화에 효율적

2. Microprogrammed control : software적인 방식, 메모리 이용, 수정에 용이하다

 

오른쪽 그림의 Control Logic gates는 Hardwired한 방식으로 볼 수 있다

Timing과 관련된 것은 아래 SC파트

 

t0 ~ tn까지 순차적으로 신호가 나오는데 톱니바퀴처럼 Di신호와 맞물리면 (timing 맞게) 그 연산을 수행한다.

하지만 Ti신호가 순차적으로 들어오기 때문에 아래 예제처럼 D3T4의 경우 D3가 1이더라도 T4는 T3보다 늦게 신호를 받으므로 T3신호의 결과를 먼저 수행한 후 D3T4를 수행할 수 있다.

위에서 말한 Ti신호가 순차적으로 Clock에 맞게 들어오는 것을 시각적으로 표현한 것

옆에 예 D3T4를 보면 D3는 T3시점부터 뛰고 있고 T4가 clock에 의해 동기화 됨으로써 신호를 받게 되면 함께 1이 되어

D3T4 기능을 수행할 수 있게 되는 것이다. 그리고 한 clock신호가 다시 동기화 되면 바로 끝난다.

728x90
반응형

'CS > 컴퓨터 구성' 카테고리의 다른 글

[13주차 1강]  (0) 2021.11.26
[12주차 1강]  (0) 2021.11.18
[10주차 1강]  (0) 2021.11.03
[9주차 1강]  (0) 2021.10.27
8주차 1강  (0) 2021.10.20