Skip to main content

Command Palette

Search for a command to run...

[혼공컴운] 2주차_복습은 필수(Ch 04 ~ 05)

Updated
4 min read
[혼공컴운] 2주차_복습은 필수(Ch 04 ~ 05)

04-1) ALU와 제어장치

  • ALU : 계산기

    • 받아들이는 정보

      • 레지스터를 통해 피연산자

      • 제어장치로부터 제어 신호

    • 내보내는 정보

      • 연산 수행 결과 : 데이터, 메모리 주소

        ⇒ 일시적으로 레지스터에 저장 : CPU가 레지스터에 접근하는 속도가 메모리에 접근하는

속도보다 훨씬 빠르기 때문.

  • 플래그 : 연산 결과에 대한 추가적인 정보

    • 부호 플래그 : 연산한 결과의 부호

      • 부호 플래그가 1이다 ⇒ 음수다!
    • 제로 플래그 : 연산 결과가 0인지 여부

      • 제로 플래그가 1이다 ⇒ 0이다!
    • 캐리 플래그 : 연산 결과 올림수나 빌림수가 발생했는지

    • 오버플로우 플래그 : 오버플로우가 발생했는지

    • 인터럽트 플래그 : 인터럽트가 가능한지

    • 슈퍼바이저 플래그 : 커널모드, 사용자 모드로 실행 중인지

오버 플로우 : 연산 결과를 담을 레지스터보다 연산 결과가 더 큰 상황

  • 제어장치 : 제어 신호 내보내고, 명령어 해석

    • 받아들이는 정보

      • 클럭 신호

        • 클럭 : 컴퓨터의 모든 부품을 움직일 수 있게 하는 시간 단위
      • 해석해야 할 명령어

        • 명령어 레지스터
      • 플래그 레지스터 속 플래그 값

      • 시스템 버스 중 제어 버스로 전달된 제어 신호

    • 내보내는 정보

      • CPU 외부 : 제어 버스로 제어 신호 내보내기

        • 메모리에 전달

        • 입출력장치에 전달

      • CPU 내부

        • ALU에 전달

        • 레지스터에전달

04-2) 레지스터

  • 프로그램 카운터 (=명령어 포인터) : 메모리에서 읽어 들일 명령어 주소

  • 명령어 레지스터 : 해석할 명령어 저장 → 해석한 뒤 제어 신호 내보냄

  • 메모리 주소 레지스터 : 메모리의 주소 저장

  • 메모리 버퍼 레지스터(=메모리 데이터 레지스터) : 메모리와 주고받을 값(데이터와 명령어)


일반적으로 프로그램 카운터는 꾸준히 증가하며 프로그램을 차례대로 실행하지만 명령어 중 JUMP,CONDITIONAL JUMP, CALL, RET 와 같이 특정 메모리 주소로 실행 흐름을 이동하는 명령어가 실행되면 순차적으로 프로그램이 실행되지 않는다. ⇒ 이때 프로그램 카운터에는 변경된 주소가 저장


  • 범용 레지스터 : 데이터와 주소를 모두 저장 가능

  • 플래그 레지스터 : 연산 결과 또는 CPU 상태에 부가적인 정보 저장


  • 스택 주소 지정 방식 : 스택과 스택 포인터를 이용한 주소 지정 방식

    • 스택 포인터 : 스택의 꼭대기를 가리키는 레지스터 ( 스택에 마지막으로 저장한 값의 위치)

    • 스택 영역 : 스택은 메모리 안에 있으며 스택처럼 사용하기로 양속된 영역.

  • 변위 주소 지정 방식 : 오퍼랜드 필드의 값(변위) + 특정 레지스터의 값 ⇒ 유효 주소를 얻어냄.

    • 상대 주소 지정 방식 : 오퍼랜드 프로그램 카운터의 값을 더하여

      • ex) 오퍼랜드가 -3 이었다면 명령어로부터 3번째 이전
    • 베이스 레지스터 주소 지정 방식 : 오퍼랜드와 베이스 레지스터의 값을 더하여

    • 베이스 레지스터 : 주소

    • 오퍼랜드 : 기준 주소로부터 떨어진 거리

      • ex) 오퍼랜드가 40, 베이스 레지스터가 200 이면 200번지부터 40 떨어진 240

04-3) 명령어 사이클과 인터럽트

  • 명령어 사이클 : 하나의 명령어를 처리하는 정형화된 흐름(일정한 주기가 반복, 실행)

    • 인출 사이클: 명령어를 메모리에서 CPU로 가져오는 단계

    • 실행 사이클: CPU가 가져온 명령어 실행하는 단계

    • 간접 사이클 : 메모리 접근을 한 번 더 해야 하는 단계 (간접 주소 지정 방식)

  • 인터럽트 : 이러한 흐름이 끊어지는 상황.

    • 동기 인터럽트 : CPU에 의해 발생하는 인터럽트 (=예외)

    • 비동기 인터럽트 : 입출력 장치에 의해 발생하는 인터럽트 (=하드웨어 인터럽트)

      • 입출력 작업 중에도 CPU로 하여금 효율적으로 명령어를 처리할 수 있게 함.

      • 인터럽트 요청 신호 : CPU에 물어보기

      • 인터럽트 플래그 : 인터럽트를 받아들일지 ,무시할지 결정

      • 인터럽트 서비스 루틴 = 인터럽트 핸들러 : 인터럽트를 처리하기 위한 프로그램

        • 인터럽트 벡터 : 인터럽트 서비스 루틴을 식별하기 위한 정보

05-1) 빠른 CPU를 위한 설계 기법

  • 클럭

    • 클럭 속도 : 헤르츠(Hz) 단위로 측정 , 1초에 클럭이 몇 번 반복되는지
  • 코어와 멀티코어

    • 코어 : CPU 내에서 명령어를 실행하는 ‘하드웨어’ 부품

    • 멀티 코어 : 여러개의 코어 , 멀티코어 CPU, 멀티코어 프로세서

  • 스레드 : 명령어를 실행하는 단위

    • 하드웨어적 스레드 : 하나의 코어가 동시에 처리하는 명령어 단위

      • 멀티스레드 프로세서 = 멀티스레드 CPU : 하나의 코어로 여러 명령어 동시 처리

      • 논리 프로세서

    • 소프트웨어 적 스레드 : 하나의 프로그램에서 독립적으로 실행되는 단위

05-2) 명령어 병렬 처리 기법

  • 명령어 병렬 처리 기법

    • 명령어 파이프라이닝

      • 같은 단계가 겹치지만 않는다면 CPU는 각 단계를 동시에 실행할 수 있음.

      • 파이프 라인 위험 : 특정 상황에서 성능 향상에 실패

        • 데이터 위험 : 데이터 의존성에 의해 발생

        • 제어 위험 : 프로그램 카운터의 갑작스러운 변화에 의해 발생

        • 구조적 위험 (= 자원 위험) : 서로 다른 명령어가 동시에 ALU, CPU 부품 사용할 때 발생

    • 슈퍼스칼라 : CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조

      • 슈퍼스칼라 프로세서 = 슈퍼스칼라 CPU

      • 반드시 파이프라인 개수에 비례하여 빨라지지 않음

    • 비순차적 명령어 처리(OoOE) : 명령어들을 순차적으로 실행하지 않는 기법

      • 순서를 바꿔 실행해도 무방한 명령어를 먼저 실행하여 파이프라인이 멈추는 것을 방지

05-3) CISC와 RISC

  • ISA : 명령어 집합, 명령어 집합 구조

    • ISA는 일종의 CPU의 언어이다 왜?

      • 제어장치가 명령어를 해석하는 방식

      • 사용되는 레지스터의 종류의 개수

      • 메모리 관리 방법

      • CPU 하드웨어 설계에 모두 영향!


  • CISC : 복잡한 명령어 집합을 활용하는 컴퓨터

    • 가변 길이 명령어

    • 적은 수의 명령어로 프로그램 동작 → 메모리 공간 절약

    • 실행되기까지의 시간 일정하지 않음.

    • 여러 클럭 주기 필요

  • RISC

    • 고정 길이 명령어

    • 명령어 규격화, 1클럭 내외로 실행

    • 레지스터 적극 활용

기본 숙제

  • P 125의 2번

    • 플래그 레지스터

    • 프로그램 카운터

    • 범용 레지스터

    • 명령어 레지스터

  • P 155의 4번

    • 코어

More from this blog

[혼공후기] 재밌으면서도 알찼던 6주! 14기 활동 회고

매번 혼공 학습단을 신청해 봐야겠다고 했지만 기간 놓쳐버리기…또는 너무 바쁜 나머지 완주 못할 것 같아서 포기하다가 때마침 공부가 필요한 시기에 시간이 나서 신청하게 되었다. 공부할 새 책도 배송이 오고 완주할 생각에 기대감 상승. (+중간에 간식 먹을 생각) 참고할 수 있는 강의 영상이 있기 때문에 영상강의 보면서 책 필기 및 정리 이해한 내용을 바탕으로 블로그 정리 이런 방식으로 공부를 했다. 사실 하루에 조금씩 공부했으면 적당한 ...

Aug 23, 20252 min read

[혼공컴운] 6주차_책 한 권을 끝내다니(Ch 14~ 15)

14-1) 연속 메모리 할당 연속 메모리 할당 : 프로세스에 연속적인 메모리 공간을 할당하는 방식 스와핑 : 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식 스왑 영역 : 프로세스들이 쫓겨나는 보조기억장치의 일부 영역 스왑 아웃 : 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것 스왑 인 : 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것 → 스와핑을 이용하면 프로세스들이 요구하는 메모...

Aug 16, 20259 min read
[혼공컴운] 6주차_책 한 권을 끝내다니(Ch 14~ 15)

[혼공컴운] 5주차_끝이 보인다(Ch 12 ~ 13)

12-1) 동기화란 동시다발적으로 실행되는 많은 프로세스는 서로 데이터를 주고받으며 협력하며 실행된다. ⇒ 협력하여 실행되는 프로세스들은 실행 순서와 자원의 일관성을 보장해야 하기에 반드시 동기화가 필수 프로세스 동기화 : 프로세스들 사이의 수행 시기를 맞추는 것 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 공유가 불가능한 자원의 동시 사용을 피하...

Aug 9, 20255 min read
[혼공컴운] 5주차_끝이 보인다(Ch 12 ~ 13)

[혼공컴운] 4주차_운영체제 시작(Ch 09 ~ 11)

09-1) 운영체제를 알아야 하는 이유 운영체제 : 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 (시스템) 자원 : 프로그램 실행에 마땅히 필요한 요소 컴퓨터가 부팅될 때 메모리 내 커널 영역에 적재 사용자 영역 : 사용자가 이용하는 응용 프로그램이 적재되는 영역 ⇒ 메모리 공간에 주소가 겹치지 않게 프로그램 적재해 준 건? 운영체제 실행할 프로그램 메모리에 적재 실행되지 않...

Jul 26, 20257 min read
[혼공컴운] 4주차_운영체제 시작(Ch 09 ~ 11)

[혼공컴운] 3주차_컴퓨터 구조 끝(Ch 06 ~ 08)

06-1) RAM의 특징과 종류 RAM 휘발성 저장 장치 실행할 대상 저장 보조기억장치 비휘발성 저장 장치 보관할 대상 저장 CPU는 보조기억장치에 직접 접근하지 못하고 RAM으로 복사하여 저장한 뒤 실행. RAM 용량이 적으면 보조기억장치에서 실행할 프로그램을 가져오는 일이 잦아 실행 시간이 길어지기 때문에 RAM용량이 충분히 크면 많은 데이터를 가져와 미리 RAM에 저장하여 프로그램들을 동시에 빠르게 실행하는데 유리하다...

Jul 19, 20258 min read
[혼공컴운] 3주차_컴퓨터 구조 끝(Ch 06 ~ 08)
W

WOW's dev archive

42 posts

언젠가 나에게 힘이 될 차곡차곡 쌓은 기록🥰

[혼공컴운] 2주차_복습은 필수(Ch 04 ~ 05)