최종 정리

2025. 12. 8. 05:36 · Basic/컴퓨터구조

1. 레지스터 기본 구성

2. 마이크로 연산

= 마이크로 동작 = 마이크로 오퍼레이션 = μ-연산

- CPU에서 한 클럭 펄스 동안에 일어나는 세부 동작

- 레지스터 간 이루어지는 낮은 수준의 기본 동작

- 매크로 명령어 (여러개의 클럭 펄스 필요)

3. 레지스터 전송 언어 RTL

- Register Transfer Language

- 레지스터 동작을 기호로 나타낸 언어

- 어셈블리 언어의 중립적 형태

- 전송 & 연산과정 표시

기호 정의
t₁  t₂   t₃ 한 클럭 펄스 동안 일어나는 동작의 단계
Y 메모리 주소 Y
M[Y]  메모리 주소 Y의 내용
레지스터 레지스터 내용
M[레지스터] 레지스터가 가라키는 내용

4. 상태 레지스터

= 플래그 레지스터 flag register

- 연산 결과에 따른 연산장치의 상태를 저장

- 최종 연산결과 상태에 따라 어느 플래그에 저장되는지 달짐

- 조건 분기 명령들 : 각 조건 플래그 비트의 상태에 따라 분기된다.

 

상태 레지스터 플래그 비트 세팅

Z E C S O (V) R I P
제로 동등 캐리 부호 오버플로우 예비 인터럽트 마스크 권한
0이면 1 같으면 1 올림 있으면 1 양수면 0
음수면 1
오버되면 1   인터럽트 없으면 1 관리자면 1

5. 명령어 세트

- 특정 CPU를 위해 정의되는 명령어 리스트/집합

- 명령어 세트 구조 ISA, Instruction Set Architecture : 컴퓨터 구조의 일부

 

CPU 명령어 세트 설계 시, 고려사항

- 명령어 형식

- 주소지정방식

- 연산 종류

- 데이터 타입

6. CPU 명령어 형식

- 명령어를 구성하는 비트를 여러 개의 필드로 나누어 정의한 것

- 연산코드 필드, 오퍼랜드 필드

- 필드 : 특정 데이터를 저장하도록 지정해 놓은 영역

7. 명령어 형식 설계 방법

 

8. 주소지정방식 종류 : 가상의 명령어 설계

어셈블리 명령어; 레지스터 전송 언어

 

암시적 Implied   T = 0ns  메모리 접근 X
- 오퍼랜드(피연산자)없이
- 명령어 자체가 어떤 레지스터를 쓸지 암시한다.
- AC(누산기)를 기본 대상으로 한다.
** 오퍼랜드 없이 연산코드 자신만으로 특정 레지스터의 동작을 암시한다. 

INC; AC ← AC + 1


즉치 Immediate  T = 0ns  메모리 접근 X
- 오퍼랜드(피연산자) = 값
- 오퍼랜드 필드 안에 값이 직접 들어있음
** 명령어 형식의 오퍼랜드 필드에 " 즉시 사용할 수 있는 데이터 수치 "로 실제 피연산자가 들어있다. 

ADD B, 90H; B ← B + 90H


직접 Direct   T = 100ns  메모리 접근 1회
- 오퍼랜드(피연산자) = 유효주소(값이 저장된 메모리 주소)
** 오퍼랜드 필드에 '피연산자가 저장된 메모리 위치'인 유효주소가 들어있다. 

ADD B, [1234H]; B ← B + M[1234H]


간접 Indirect   T = 200ns  메모리 접근 2회
- 오퍼랜드(피연산자) = [ [메모리 주소가 저장된 장소]의 간접주소]
1. 간접주소 위치 읽기
2. 실제 주소로 접근
** 오퍼랜드 필드에 [유효주소의 주소]인 [간접주소]가 들어있다

ADD B, [[5678H]]; B ← B + M[ M[5678H]]


레지스터 Register   T = 0ns  메모리 접근 1회
- 오퍼랜드(피연산자) = 레지스터(변수) 이름 자체
** 오퍼랜드 필드에서 지정한 레지스터에 피연산자

ADD B,C; B ← B + C


레지스터 간접 Register Indirect   T = 0ns  메모리 접근 1회
- 오퍼랜드(피연산자) = 유효주소가 저장된 [레지스터]
** 오퍼랜드 필드에서 지정한 레지스터에 유효주소 저장

ADD B,[C]; B ← B + M[C]


상대 Relative  T = 110ns  메모리 접근 1회 + 레지스터간 덧셈 1회
- PC + d(변위값)로 유효주소 계산
** 오퍼랜드 필드에서 지정한 PC에 저장된 장소 값과 변위값 d를 더해 유효주소 계산

ADD B, [PC+d]; B ← B + M[PC+d]


인덱스 Index  T = 110ns  메모리 접근 1회 + 레지스터간 덧셈 1회
- IX + d로 주소 계산
** 상대 주소지정 방식의 일종으로, 인덱스 레지스터 IX를 별도로 사용하면 배열연산에 유리하다.

 

9. 제어장치와 명령어 사이클

- 명령어 인출, 해독 실행

- 명령어 기본 사이클 = 인출 사이클 + 실행 사이클

 

10. 스택 영역 LIFO 

- 서브 루틴을 호출 할 때 메인 프로그램 의 이치로 다시 돌아올 복귀 주소를 메모리의 스택 영역에 저장해 놓음

- 스택 포인터 (SP) : CPU 레지스터 중 하나로, 현재 상태에서 이용 가능한 스택 영역의 최종 위치를 표시해줌

- 항상 스택영역의 최상위/최하위 주소를 가르킴

 

11. 다중 서브루틴과 스택 영역의 변화

 

12. 정수 산술 연산

정수 ➔ 2진수  ➔ -2진수 ➔ 1'c ➔ 2'c

-2진수 : 부호만 - 바꾸기

1'c : 0과 1 바꾸기

2'c : +1하기

 

13. IEEE754 표준 2진 부동소수점 수식 표현

- 음수 버전

- 양수 버전

1비트 부호 8비트 지수부 127 +- 지수 10110000000000000 19비트

 

14. 논리 연산

1. 마스크 연산 : AND

2. 선택적 연산 : OR

3. 삽입 연산 : AND 반, OR 반

4. 비교 연산 : XOR (다를때 1, 같을때 0)

5. 선택적 보수 연산 : XOR (원하는 위치의 비트만 1로 변경 ** 1은 1'c, 0은 0으로

 

15. 시프트 연산

1. 논리적 시프트 연산

0010 1101
왼쪽 논리 시프트 1011 0100 0000 1011 오른쪽 논리 시프트
왼쪽 기준 앞에 2개 없어짐 오른쪽 기준 앞에 2개 없어짐

 

2. 순환 시프트 연산

0010 1101
왼쪽 순환 시프트 0101 1010 1001 0110 오른쪽 순환 시프트
왼쪽 기준 맨 앞 숫자 뒤로 감 오른쪽 기준 맨 뒤 숫자 앞으로 감

 

3. 산술적 시프트 연산1

0010 1101
왼쪽 산술적 시프트 0001 0110 00101101 오른쪽 산술적 시프트
왼쪽 기준 앞에 2개 없어짐 오른쪽 기준 앞에 2개 없어짐

 

16. 마이크로 프로그래밍 제어 방식

- 제어 서브루틴 : 기계어 명령어 종류 하나를 처리한다.

- 제어신호를 발생시키는 마이크로 명령어들로 구성되어있음

1. 해독 : 명령 레지스터 IR에 들어온 명령어를 해독해 연산 코드 구함

2. 주소 계산 : 연산코드에서 해당 명령에 필요한 제어서브루틴의 시작주소를 계산함

3. 주소 찾기 : 제어 메모리의 마이크로 프로그램에서 제어 서브루틴을 찾는다

4. 인출 : 제어 서브루틴에서 마이크로 명령어를 차례대로 인출한다

5. 해독 & 결정 : 마이크로 명령어를 해독해 실행할 마이크로 연산 종류를 결정한다

6. 제어신호 출력 : 각 마이크로 연산 필드에서 제어신호를 만들어 출력한다.

 

17. 명령어 기본 사이클 = 인출 + 실행 사이클

- CPU 명령어 사이클 = 명령어 사이클 = CPU 사이클

- 프로그램에서 주어진 명령어를 실행하기 위해 반복적으로 수행하는 일련의 연속동작

 

18. 명령어 인출 사이클

- CPU가 메모리에서 명령어를 읽어오는 단계

- PC가 가르키는 메모리 내용에서 명령어를 순서대로 인출해 명령 레지스터 IR로 전송

주소 지정 → 꺼내옴 → 다음 준비

1. 명령어가 저장된 주소를 지정한다.

2. 해당 주소에 들어있는 명령어를 메모리에서 꺼내온다.

3. 다음번 명령어의 주소를 PC에 준비한다.

 

19. 명령어 실행 사이클

- CPU가 메모리에서 명령어를 수행하는 단계

- 명령 레지스터 IR에 저장된 명령어 해독하고, CPU 내외부에서 명령어 실행에 필요한 제어신호 발생

해독 → 실행 신호 발생

1. 명령어 해독

2. 명령어 실행에 필요한 CPU 내외부 제어신호 발생

 

20. 인터럽트 사이클

- 프로그램의 정상 처리순서를 방해하는 서비스 요구

- CPU 외부장치 / 프로그램 요청에 의해 발생

   ㄴ 하드웨어 인터럽트 : CPU 외부장치에서 발생

   ㄴ 소프트웨어 인터럽트 : 프로그램 요청으로 발생

 

인터럽트 요구 수행시

1. CPU 작업 중단

2. 현재 상태 스택에 저장 ( 복귀주소, 레지스터 상태 등)

3. 인터럽트 서비스 루틴(= 핸들러)  실행하여 인터럽트 처리

4. 스택에 저장해둔 CPU 상태 복권

 

21. 다중 인터럽트

- 인터럽트 서비스 프로그램이 진행 도중 또 다른 인터럽트 발생 (= 다중 서브 루틴 개념)

 

인터럽트 마스크 / 마스킹 방법

- 인터럽트 발생 시, 받아들이지 않도록 금지 플래그 설정

   ㄴ 인터럽트 불가능 설정 : 새로운 인터럽트 대기 시키기

   ㄴ 인터럽트 가능 설정 : 새로운 인터럽트 수용

 

우선순위 방법

- 현재 작업보다 순위 높으면 시작

- 낮으면 대기

 

22. CPU 명령어 사이클

기본 사이클(인출, 실행) + 간접 사이클 + 인터럽트 사이클

CPU 명령어 사이클 처리 순서

1. 명령어 인출
2. 명령어 해독
3. 오퍼랜드 인출 (피연산자 데이터 가지고 오기)
4. 연산 실행
📌 CPU 명령어 사이클 : 기본사이클 + 간접 사이클 + 인터럽트 사이클
1. 명령어 인출 : 메모리에서 명령어 읽고 CPU로 가져옴
2. 간접 사이클 : 오퍼랜드 필드의 간접주소에서 유효주소 읽음
3. 명령어 실행 : 명령어 해독 & 연산 실행
4. 인터럽트 사이클 : 인터럽트 요구에 해당하는 서비스 루틴 실행

 

728x90

'Basic > 컴퓨터구조' 카테고리의 다른 글

컴퓨터구조 기말고사 퀴즈 정리  (1) 2025.12.05
컴퓨터구조 -1-  (0) 2025.10.20
컴퓨터구조 -1- 퀴즈  (0) 2025.10.17
'Basic/컴퓨터구조' 카테고리의 다른 글
  • 컴퓨터구조 기말고사 퀴즈 정리
  • 컴퓨터구조 -1-
  • 컴퓨터구조 -1- 퀴즈
따`ddah
따`ddah
    250x250
  • 따`ddah
    IT's ddah
    따`ddah
  • 관리    글쓰기
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Algorithm
        • [C] Do it! 자료구조와 함께 배우는 알고리..
        • 알고리즘 스터디
        • 코딩 테스트
      • Basic
        • 운영체제 OS
        • 컴퓨터구조
        • 소프트웨어공학 (UML)
        • 기계 학습 기반의 데이터 공학
      • Projects
        • Auto Post : SNS 자동 업로더
      • DBMS
        • 데이터베이스 이론
        • MySQL
        • Oracle SQL
        • BigQuery
        • Yammer
      • Programming
        • Python
        • C
        • Java
        • React
        • JavaScript
        • R
      • 빅데이터
      • AI
        • 멀티미디어응용
        • 머신러닝
        • 인공지능
      • 자격증
        • Azure DP-900
        • Azure AI-900
        • SQLD
        • CSTS
      • 대외활동 및 취업(인턴)
        • 취준 인턴
        • LG Aimers
        • OUTTA
        • 빅데이터 분석 학회 BDA
        • 세계시민교육연구소 청년단 GYIA
      • Tool
        • Git
        • IDE
      • 도서
        • IT
      • 그 외
        • 단축키
        • ✞
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오블완
    빅데이터분석
    취업
    대학생학회
    Py
    Oracle
    리액트
    react
    sql
    input
    파이썬 챗봇 만들기
    AI역량검사
    BDA학회
    대외활동
    python
    js
    파이썬
    javascript
    jsx
    자바스크립트
    티스토리챌린지
    이름나이
    print(f"")
    주석
    importturtle
    취업준비
    자료형
    파이썬{}
    오라클SQL
    dbms
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
따`ddah
최종 정리
상단으로

티스토리툴바