1주차에는 상세하게 내용 정리를 했지만 타자를 치면서도 이건 지속불가능하다는걸 느꼈다... 그래서 이번 주는 마인드맵으로 기억해야할 키워드를 적었고 좀 더 설명이 필요한 부분만 적으려고 한다.
: CPU 내부의 계산 담당
: 명령어를 읽어 들이고 해석
제어장치가 받아들이는 정보
1. 제어장치는 클럭 신호를 받아들인다 (디논에서 배운 그 clock)
2. 제어장치는 '해석해야할 명령어'를 받아들인다
CPU가 해석해야할 명령어를 명령어 레지스터로 저장
명령어 레지스터에서 제어장치로 해석해야할 명령어를 보냄
제어장치가 제어 신호를 발생시켜 컴퓨터 부품들에 수행해야 할 내용을 알림
CPU뿐만 아니라 CPU 외부 장치도 제어 신호를 발생 시킬 수 있음
제어장치가 내보내는 정보
1. CPU 외부에 전달하는 제어신호
제어 버스로 제어 신호를 내보내는거임
1. 메모리에 전달하는 제어 신호
2. 입출력장치에 전달하는 제어 신호
이렇게 두가지가 있음
제어장치가 메모리에 저장된 값을 읽거나/메모리에 새로운 값을 쓰고 싶을때
메모리로 제어 신호를 내보냄
제어장치가 입출력장치의 값을 읽거나/입출력장치에 새로운 값을 쓰고 싶을때는
입출력장치로 제어신호를 내보냄
1. ALU에 전달하는 제어신호
수행할 연산을 지시하기 위해
2. 레지스터에 전달하는 제어신호:
레지스터간에 데이터를 이동시키거나
레지스터 내에 저장된 명령어를 해석하기 위해
위 4개 레지스터에 어떤 값이 담기는지 p114 참고
# p114 요약:
CPU로 실행할 츠로그램이 1000번지부터 1500번지까지 저장되어있고 1000번비에는 1101 저장
1. 프로그램이 실행되기 전: 프로그램 카운터에 1000이 저장되어있음
2. 1000번지를 읽어들이기 위해 주소 버스로 1000번지를 내보내야 함
-> 메모리 주소 레지스터에 1000 저장
3-1. 주소 버스를 통해 메모리 주소 레지스터로부터 메모리 주소 값(1000번지)이 메모리로 보내짐.
3-2. 제어버스를 통해 '메모리 읽기' 제어 신호가 메모리로 보내짐
4-1. 데이터 버스를 통해 메모리 1000번지에 저장된 값이 메모리 버퍼 레지스터로 전달 됨
4-2. 프로그램 카운터가 증가되어 다음 명령어를 읽어들일 준비함
5. 메모리 버퍼 레지스터에 저장된 값이 명령어 레지스터로 이동
6. 제어장치가 명령어 레지스터의 명령어를 해석하고 제어 신호 발생시킴
4-2단계에서 프로그램 카운터 값이 증가되었으니 1000번지 명령어가 끝나면
CPU는 다음 명령어인 1001번지를 읽어들임.
프로그램 카운터가 꾸준히 증가하기 때문에
CPU가 메모리 속 프로그램을 순차적으로 읽어들이고 실행해 나갈 수 있음
: 실행되는 프로그램 속 명령어들이 반복되는 일정한 주기
인출 사이클과 실행 사이클이 반복하여 실행되며 프로그램이 돌아감
어떤 명령어는 (1) 인출과 (2) 실행 사이클만으로 실행되고,
어떤 명령어는 (1) 인출 (2) 간접 (3) 실행 사이클을 거쳐 실행된다
인터럽트: CPU가 수행 중인 작업을 방해하여 중단 시키는 신호
막을 수 있는 인터럽트/막을 수 없는 인터럽트로 나뉨
CPU가 프린터와 같은 입출력장치에 입출력 작업을 부탁하면, 작업을 끝낸 입출력장치가 CPU에 완료 알림을 보냄
키보드, 마우스와 같은 입출력장치가 어떤 입력을 받아들였을 때 이를 처리하기 위해 CPU에 입력 알림을 보냄
하드웨어 인터럽트라고도 부른다
CPU는 효율적으로 명령어를 처리하기 위해 이런 알림과 같은 하드웨어 인터럽트를 사용
하드웨어 인터럽트 처리 순서도 있음 (p132 참고)
서로 다른 설계 기법으로 CPU의 성능을 높일 수 있다
: 1초에 클럭이 몇 번 반복되는지 나타냄
코어란?
: '명령어를 실행하는 부품'의 관점에서의 CPU
멀티코어란?
: 위 코어를 여러 개 포함하고 있는 CPU
: 실행 흐름의 단위
하드웨어적 스레드란?
: 하나의 코어가 동시에 처리하는 명령어 단위
소프트웨어적 스레드란?
: 하나의 프로그램에서 독립적으로 실행되는 단위
멀티코어 프로세서와 멀티스레드 프로세서의 차이점
: 멀티코어 프로세서는 명령어를 실행할 수 있는 하드웨어 부품이 CPU안에 2개 이상 있는 CPU, 멀티스레드 프로세서는 하나의 코어로 여러 개의 명령어를 동시에 실행할 수 있는 CPU
: 명령어를 동시에 처리하여 CPU를 한시도 쉬지 않고 작동시키는 기법
: 공장 생산 라인마냥 명령어들을 명령어 파이프라인에 넣고 동시에 처리하는 기법
명령어 처리 과정:
1. 명령어 인출
2. 명령어 해석
3. 명령어 실행
4. 결과 저장
: CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조
: 명령어를 순차적으로 실행하지 않고 순서를 바꿔 실행해도 무방한 명령어를 먼저 실행하여 명령어 파이프라인이 멈추는 것을 방지하는 기법
CPU가 이해할 수 있는 명령어들의 모음인 ISA의 일종
CPU가 이해할 수 있는 명령어들의 모음인 ISA의 일종
(위 정리 참고)
결국 오늘도 간결한 요약에 실패했다...