1학년 2학기 기말 컴퓨터 구조

제어 장치의 구성
  • 제어 장치의 역할
    • 주기억 장치의 명령어 해독 -> 컴퓨터 시스템 내의 각 부분으로 제어 신호 전달
  • 진행 순서
    1. 입력받은 데이터를 기억 장치에 저장
    2. 기억장치에 있는 데이터를 연산 장치로 이동
    3. 연산 장티에서 연산된 결과를 기억 장치로 이동
    4. 기억 장치에 저장된 데이터를 출력 장치에서 출력
  • 구성 요소
    • 순서기 - 정해진 순서에 따라 동작 순서 제어
    • 명령어 계수기(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 주기억 장치 주소 지정
      • 프로그램 길이 짧음, 입력 자료 보전
      • 기억 장치 접근 횟수 증가 -> 수행 시간 증가
  • 주소 지정 방식
    • 유효 주소 : 피연산자가 저장되어 있는 주소
    • 직접 주소 지정
      • 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]
프로그램 실행
  • 메이저 사이클 - 중앙 처리 장치가 무엇을 하고 있는지 나타냄
    • 인출 사이클 - 해독할 명령을 주기억 장치에서 가져옴
    • 간접 사이클 - 명령어가 간접 주소 지정 방식이면, 유효 주소를 알기 위해 다시 기억 장치에 접근
    • 실행 사이클 - 인출/간접 사이클에서 자료 읽고, 인출 사이킁레서 해독한 명령 실행
    • 인터럽트 사이클 - 인터럽트 발생 시 인터럽트 처리
  • 마이크로 동작 - 하나의 명령어를 수행하기 위한 작은 연산들
    • 마이크로 동작 기호
      • 대문자, 숫자 : 레지스터 표시
      • 아래 첨자 : 레지스터의 비트
      • 괄호 : 레지스터의 부분 위치
      • 화살표 : 정보의 전달
      • 콜론 : 제어 기능의 끝
      • 쉼표 : 마이크로 동작 구분
  • 논리 마이크로 동작
    • 선택적 비트 설정(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 구조/제어 간단한 경우에 사용
    • 동기가변식
      • 수행 시간이 다를 경우, 그룹을 만들어 수행 시간 정의
      • 제어가 다소 복잡하지만, 수행 시간의 차이가 클 때 중앙 처리 장치 시간 효율적 사용
    • 비동기식
      • 개별적으로 계산
      • 시간 낭비 없지만 제어가 복잡