제어 장치의 구성
- 제어 장치의 역할
- 주기억 장치의 명령어 해독 -> 컴퓨터 시스템 내의 각 부분으로 제어 신호 전달
- 진행 순서
- 입력받은 데이터를 기억 장치에 저장
- 기억장치에 있는 데이터를 연산 장치로 이동
- 연산 장티에서 연산된 결과를 기억 장치로 이동
- 기억 장치에 저장된 데이터를 출력 장치에서 출력
- 구성 요소
- 순서기 - 정해진 순서에 따라 동작 순서 제어
- 명령어 계수기(PC) - 다음에 실행할 명령어의 주소 기억
- 주소 레지스터(MAR) - 명령이ㄷ나 자료가 기억되어 있는 주소 보관
- 주소 처리기 - 피연산자 인출 시 해당 주소 계산 or 수행될 명령 순서가 바뀔 때 다음 명령 주소 계산
- 기억 레지스터 - PC가 지정하는 주기억 장치의 내용을 임시 저장
- 명령어 해독기 - 명령어 레지스터의 코드를 해독하여 필요한 신호 발생
- 명령어 레지스터 - 현재 명령 기억, OP Code와 Operand로 구성
명령어
- 명령어의 기능
- 어떤 일을 어떻게 수행해야 하는지를 나타내는 비트들의 집합
- 특정 작업을 수행하기 위하여 컴퓨터가 실행해야 할 명령어를 프로그램이라 함
- 명령/주소가 주기억 장치에 연속적으로 위치
- 명령어의 종류
- 데이터 처리 명령어 - 산술/논리/비트/시프트 연산
- 데이터 전송 명령어 - mov
- 프로그램 제어 명령어 - PC 값 변경(분기, 서브 루틴)
- 명령어의 형식
- 모드 - Operand의 주소가 직접/간접 주소인지 판별
- OP Code - 실행할 동작 지시
- Operand - 피연산자의 주소
- 명령 코드의 기능
- 함수 연산
- 산술 연산 : 덧셈, 시프트, 보수
- 논리 연산 : and, or, not
- 전달 기능
- load or fetch : 주기억 장치에서 중앙 처리 장치로 가져옴
- store : 중앙 처리 장치의 데이터를 주기억 장치에 저장
- 제어 가능
- 조건 분기, 무조건 분기
- 입출력 기능
- 함수 연산
- 주소 수에 따른 분류
- 0주소
- 스택 구조에서 사용
- 입력 데이터의 출처와 연산 결과 저장 장소 고정
- Operand 필요 없음
- TOS 존재
- 1주소
- 단일 누산기 구조에서 사용
- 명령어 수행은 AC에서 이루어짐
- 주소부 1개, 피연산자 = {주소부, AC}
- 연산 결과 AC에 저장
- 2주소
- 범용 레지스터 구조에서 사용
- 각 주소부는 레지스터 or 주기억 장치 주소 지정
- 연산 결과는 두 주소 중 한 곳에 저장
- 3주소
- 범용 레지스터 구조에서 사용
- 각 주소부는 레지스터 or 주기억 장치 주소 지정
- 프로그램 길이 짧음, 입력 자료 보전
- 기억 장치 접근 횟수 증가 -> 수행 시간 증가
- 0주소
- 주소 지정 방식
- 유효 주소 : 피연산자가 저장되어 있는 주소
- 직접 주소 지정
- Operand == 유효 주소
- 프로그램 간결, 속도 빠름
- 기억 장치 용량이 큰 경우, Operand 길이 증가
- 간접 주소 지정
- Operand == 유효 주소의 주소
- 두 번 메모리 참조
- Operand 길이 단축
- 기억 장치 접근 횟수 증가
- 묵시적 주소 지정
- 명령어의 정의에 따라 주소 지정
- 누산기 구조 연산 : AC
- 스택 구조 연산 : TOS
- 즉시 주소 지정
- Operand == 피연산자
- 명령어 인출과 동시에 데이터 자동 인출
- 레지스터 주소 지정
- Operand == 레지스터 번호
- 속도 빠름
- 내부 레지스터들로 사용 제한
- 레지스터 간접 주소 지정
- Operand == 레지스터 번호 && 레지스터 내용 == 유효 주소
- 상대 주소 지정
- Operand + PC == 유효 주소
- Operand : 변위, PC : 기준
- 베이스 레지스터 주소 지정
- 베이스 레지스터 : 기준, Operand : 변위
- 인덱스 주소 지정
- Operand : 메모리의 기본 주소
- 인덱스 레지스터 : 변위
- 명령어 예제
- 0주소
- PUSH x : TOS <- x
- ADD : TOS <- (x+y)
- MUL : TOS <- (x*y)
- POP x : M[x] <- TOS
- 1주소
- LOAD x : AC <- M[x]
- ADD x : AC <- AC + M[x]
- STORE x : M[x] <- AC
- MUL x : AC <- AC * M[x]
- 2주소
- MOV r x : r <- M[x]
- ADD r x : r <- r + M[x]
- MUL r x : r <- r * M[x]
- 3주소
- ADD r x y : r <- M[x] + M[y]
- MUL r x y : r <- M[x] * M[y]
- 0주소
프로그램 실행
- 메이저 사이클 - 중앙 처리 장치가 무엇을 하고 있는지 나타냄
- 인출 사이클 - 해독할 명령을 주기억 장치에서 가져옴
- 간접 사이클 - 명령어가 간접 주소 지정 방식이면, 유효 주소를 알기 위해 다시 기억 장치에 접근
- 실행 사이클 - 인출/간접 사이클에서 자료 읽고, 인출 사이킁레서 해독한 명령 실행
- 인터럽트 사이클 - 인터럽트 발생 시 인터럽트 처리
- 마이크로 동작 - 하나의 명령어를 수행하기 위한 작은 연산들
- 마이크로 동작 기호
- 대문자, 숫자 : 레지스터 표시
- 아래 첨자 : 레지스터의 비트
- 괄호 : 레지스터의 부분 위치
- 화살표 : 정보의 전달
- 콜론 : 제어 기능의 끝
- 쉼표 : 마이크로 동작 구분
- 마이크로 동작 기호
- 논리 마이크로 동작
- 선택적 비트 설정(A or B, 대응 비트 1로 설정)
- 선택적 보수화(A xor B, 대응 비트 1로 설정)
- 선택적 지움(A and B’, 대응 비트 1로 설정 후 보수)
- 마스크(A and B, 대응 비트 0으로 설정)
- 삽입(A or B, 마스킹 후 대응 비트 1로 설정)
- 비교 동작(A nand B, 일치하면 0)
- 시프트 마이크로 동작
- 직렬 전송 시프트
- 1비트씩 차례대로 전송
- 논리 시프트
- 특정 방향으로 1비트씩 이동
- 바깥으로 밀려 나가는 비트는 손실, 반대편은 0으로 패딩
- 산술 시프트
- sign bit는 고정
- 회전
- 밀려나는 비트가 반대편으로 이동
- 직렬 전송 시프트
- 마이크로 사이클 - 중앙 처리 장치의 사이클 시간
- 동기고정식
- 모든 연산의 수행 시간이 같다고 가정
- 가장 수행 시간이 긴 것을 클럭 주기로 설정
- HW 구조/제어 간단한 경우에 사용
- 동기가변식
- 수행 시간이 다를 경우, 그룹을 만들어 수행 시간 정의
- 제어가 다소 복잡하지만, 수행 시간의 차이가 클 때 중앙 처리 장치 시간 효율적 사용
- 비동기식
- 개별적으로 계산
- 시간 낭비 없지만 제어가 복잡
- 동기고정식