본문 바로가기
기타

정보처리 필기_전자계산기 구조_09강_레지스터 (인강메모)

by avvin 2019. 7. 26.


문제 정보 / 이미지 출처 (무료인강) : 

https://www.youtube.com/playlist?list=PLimVTOIIZt2aR9jib0ws7hoDVZXdtiWsK




1. 레지스터


2. 프로그램 카운터


3. MAR, MBR, 상태 레지스터


4. 시프트 레지스터





1. 레지스터


CPU내부에 들어가는 초고속 기억장치

플립플롭 회로로 구성됨


임시기억장치 : 새로운 데이터가 전송되면 먼저 내용은 지워지고 새로운 내용만 기억된다.


범용 레지스터 

특수용 레지스터


사용 목적만 다르고 하드웨어적으로 똑같다


특수용 레지스터는 연산장치와 제어장치에 포함돼있다.


ex) 누산지레지스터, 명령레지스터


외부입력을 그대로 저장하는건 D형 플립플롭을 주로 사용


레지스터의 종류 // 누산기 빼고는 제어장치에 포함


- 프로그램 카운터 (PC) (레지스터) 

- 명령 레지스터 (IR)

- 누산기(Accumulator) (레지스터) //연산장치에 포함

- 플래그 레지스터 (Flag Register) //구분 애매

- 메모리 주소 레지스터 (MAR)

- 메모리 버퍼 레지스터 (MBR)




프로그램 카운터 (레지스터)★★★


프로그램은 명령의 집합 이 명령의 집합을 프로그램을 실행함과 동시에 HDD에서 RAM(주기억장치)에 로드되고

이 명령의 집합을 순차 실행


CPU에는

프로그램 카운터 레지스터

메모리 주소 레지스터

메모리 버퍼 레지스터

베이스 레지스터 : 프로그램이 시작되는 주소값 기억하는 레지스터



MAR을 통해 주소 값을 (주소버스) 주기억장치(RAM)로 보냄


RAM의 주소처리기에서 번지에 맞는 데이터를 CPU로 (데이터버스) 보냄


RAM에서 온 이 데이터를 MBR가 받음


MBR로 명령에 대한 데이터를 가져옴과 동시에 PC에 있는 번지값은 바뀜


MBR은 데이터를 필요로하는 레지스터에 보내줌



프로그램카운터 레지스터다음에 인출( 인출 : Fetch )할 명령어가 기억되어 있는 주기억장치의 번지를 기억하는 레지스이다. (fetch한 데이터는 MBR로 저장됨)

각 명령어가 인출된 후에는 자동적으로 일정 크기 (한 명령어의 길이)만큼 증가한다.




프로그램 카운터와 분기(Jump Branch)


PC 가 [주소 : 102번지] 를 MAR에 보내고 MAR은 RAM 에 주소를 전달

주소에 해당하는 데이터 값 을 MBR이 받음. 데이터 : JUMP 300 (명령데이터)

명령데이터는 IR (명령어처리하는 레지스터)에 보내지고 해독기로 보내짐 : 300번지로 건너뛰어라


이제 MBR은 [주소 : 300번지] 를 PC에 전달하고 PC는 MAR에 전달, RAM에서 300번지에 해당하는 데이터를 MBR이 받음



MBR이 분기주소를 받게되면 MAR이 아닌 PC로 보내줘야한다.

= 프로그램 실행 도중 분기가 발생하면 CPU 내의 프로그램 카운터의 내용을 먼저 변화시켜야한다.

   즉, 분기 명령어가 실행되는 경우에는 그 목적지 주소로 갱신된다.




명령 레지스터(IR, Instruction Register)


현재 실행 중인 명령어의 내용을 기억하는 레지스터


주기억장치로부터 읽혀진 명령어의 연산자(OP Code)가 기억된다


명령 해독기(decoder)에 의해서 명령의 의미가 해독되어 타이밍이 조정된 후 제어 신호로서 각 구성 요소에 전달된다.




누산기 레지스터 (Accumulator, ACC, AC)


연산결과일시적으로 기억하는 레지스터

★연산의 중심이 된다.





플래그 레지스터 ( = 상태 레지스터, Status Register, PSWR )


상태 워드 (PSW, Program Status Word) : 상태를 나타내는 word 들

한 개의 비트값에 대응시켜 상태를 저장하는 레지스터

(한 개의 비트값을 일반적으로 플래그라고 한다.)


명령 실행 순서를 제어하고, 실행중인 프로그램에 관계가 있는 시스템의 상태를 나타낸다.


 PSWR와 PSW 를 구분. PSW는 상태 워드(비트의)값. PSWR은 이러한 워드를 저장하는 레지스터







시프트 레지스터 (Shift Register)


클록펄스(CPU에서 보내주는 신호)에 의해서 기억 내용을 한 자리씩 이동하는 레지스터


2배길이 레지스터(Double -length Register)라고도 한다.


자료의 병렬정송을 직렬전송으로 변환하는데 사용하기에 적합하다




A라는 레지스터에서 B라는 레지스터에 1011을 전송할때 1 0 1 1을 동시에 병렬로 전송하던것을

하나씩 직렬로 보낼수 있도록 (한자리씩 이동시켜가며 다음 데이터를 받는 식)하는데에 사용

최근의 컴퓨터는 거의 직렬전송



베이스 레지스터와 인덱스 레지스터


HDD 프로그램이 주기억장치에 올라올때 시작점 주소를 저장하는 레지스터


주소 : BR + IR (인덱스 레지스터, 변위값) 

BR이 100일 때 100번지에서 얼마나 떨어져있는가를 나타내는것이 변위값. (인덱스개념, 배열 생각하기)


즉, 메모리가 분할된 영역으로 나뉘어 관리될 때, 프로그램이 한 영역에서 다른 영역으로 옮겨지더라도 명령의 주소 부분을 바꾸지 않고 정상적으로 수행될 수 있도록 하기 위한 레지스터

>> 프로그램이 메모리의 다른 영역으로 옮겨가서 베이스 주소가 바뀌어도 인덱스 주소만 있으면 수행하던것을 이어서 정상적

으로 수행할 수 있다.


그래서 배열 인덱스가 0부터 시작,...


인덱스 레지스터는 서브루틴 연결, 어드레스 수정, 반복계산 수행.... 외울필요 없고 입출력기능과는 상관이없다는 것만 기억


프로그래머가 직접 레지스터의 내용을 다룰 수 있는 레지스터 >> 인덱스 레지스터