minyule.log
로그인
minyule.log
로그인
혼공컴운 챕터 4. CPU
김민영
·
2023년 1월 13일
팔로우
0
컴퓨터구조
0
혼공학습단
목록 보기
2/22
4-1 ALU와 제어장치
ALU
ALU : 연산 수행
레지스터를 통해 피연산자
를 받고,
제어장치로부터 제어 신호
받음.
결과는 레지스터에 일시적으로 저장, 플래그 레지스터에 플래그 보냄
플래그 레지스터에 저장
플래그 종류 ( 연산 결과 - 플래그 )
부호 플래그 : 연산 결과의 부호. 음수면 1, 양수면 0.
제로 플래그 : 연산 결과 0 여부. 0이면 1, 0이 아니면 0.
캐리 플래그 : 올림수, 내림수 발생 여부. 올림수, 내림수 발생시 1, 아니면 0.
오버플로우 플래그 : 오버플로우 발생 여부. 발생시 1, 아니면 0.
(오버플로우 : 연산 결과가 연산 결과를 담을 레지스터보다 큰 상황)
인터럽트 플래그 : 인터럽트 가능 여부. 가능시 1, 아니면 0.
슈퍼바이저 플래그 : 커널 모드인지 사용자 모드인지. 커널 모드면 1, 사용자 모드면 0.
제어장치
제어장치 : 제어 신호 내보내고, 명령어 해석.
제어장치가 받아들이는 정보
클럭 신호
클럭 : 컴퓨터 부품들이 동작하는 시간 단위.
해석해야 할 명령어
명령어 레지스터 : CPU가 해석해야할 명령어 있음.
명령어 레지스터로부터 해석할 명령어를 받아들이고 해석, 제어신호 발생 - 컴퓨터 부품들이 수행해야 할 내용 전달.
플래그 레지스터 속 플래그 값
제어신호 발생 시 참고.
시스템 버스 - 제어 버스로 전달된 제어 신호
CPU 외에도 CPU 외부 장치 (입출력장치) 등 외부러부터 전달된 제어신호 받아들임.
제어장치가 내보내는 정보
CPU 외부에 전달하는 제어 신호 == 제어 버스로 제어 신호 내보냄.
메모리에 전달하는 제어 신호
입출력장치(보조기억장치)에 전달하는 제어 신호
CPU 내부에 전달하는 제어 신호
ALU에 전달하는 제어 신호 : 연산 수행 지시
레지스터에 전달하는 제어 신호 : 레지스터 간 데이터 이동, 레지스터에 저장된 명령어 해석
4-2 레지스터
레지스터 종류
프로그램 카운터
명령어 레지스터
메모리 주소 레지스터
메모리 버퍼 레지스터
플래그 레지스터
범용 레지스터
스택 포인터
베이스 레지스터
프로그램 카운터 Program Counter
명령어 포인터 Instruction Pointer.
메모리에서 가져올 명령어의 주소를 저장.
명령어 레지스터 Instrction Register
해석할 명령어 ( 방금 메모리에서 읽어들인 명령어 ) 저장.
제어장치는 명령어 레지스터 속 명령어를 받아들이고 해석한 후 제어신호 내보냄.
메모리 주소 레지스터
메모리 주소 저장.
CPU가 읽어들이고자하는 주소 값을 주소 버스로 보낼 때 메모리 주소 레지스터를 거침.
메모리 버퍼 레지스터
메모리 데이터 레지스터
메모리와 주고받을 값(데이터, 명령어)를 저장.
범용 레지스터
데이터와 주소 모두 저장 가능.
일반적으로 다양하고 자유롭게 사용.
플래그 레지스터
연산결과, CPU 상태에 대한 부가적인 정보 저장
메모리에 저장된 프로그램을 실행하는 과정
CPU의 메모리에 실행할 프로그램이 각 주소에 담겨있음.(1101이 1000번지에 저장되어있다고 가정)
프로그램 카운터에 실행할 명령어의 주소가 담겨있음. (1000번지)
프로그램 카운터에서 메모리 주소 레지스터로 명령어 주소가 이동. (1000번지)
제어장치로부터 메모리 읽기라는 제어 신호와 메모리 주소 레지스터가 주소 버스를 통해 메모리의 1000번지에 도착
메모리의 1000번지에 있는 1101 데이터는 데이터 버스를 통해 메모리 버퍼 레지스터로 전달
프로그램 카운터는 1000에서 1001로 증가
메모리 버퍼 제니스터에 저장된 값인 1101은 명령어 레지스터로 이동
제어장치는 명령어 레지스터의 명령어를 해석하고 제어신호 발생
특정 레지스터를 이용한 주소 지정 방식 (1) 스택 주소 지정 방식
스택 주소 지정 방식
스택 포인터 : 스택에 마지막으로 저장한 값의 위치를 저장하는 레지스터
특정 레지스터를 이용한 주소 지정 방식 (2) 변위 주소 지정 방식
상대 주소 지정 방식
오퍼랜드와 프로그램 카운터의 값을 더하여 유효 주소를 얻는 방식
if문 처럼 분기하여 특정 주소의 코드를 실행할 때 사용.
프로그램 카운터에 읽어들일 명령어의 주소가 있음. 만일 오퍼랜드가 -3이면, 명령어 주소의 -3 위치에 있는 메모리 주소에 있는 명령어 실행
베이스 레지스터 주소 지정 방식
오퍼렌드와 베이스 레지스터의 값을 더하여 유효 주소를 얻는 방식
베이스 레지스터 : 기준 주소
오퍼랜드 : 기준 주소로부터 떨어진 거리
베이스 레지스터에 200이 있으면 200이 기준이 되어서 오퍼랜드 값만큼 떨어진 주소의 명령 실행.
4-3 명령어 사이클과 인터럽트
명령어 사이클
명령어 사이클 : 프로그램 속 명령어들이 일정한 주기로 반복하며 실행되는 것. 하나의 명령어가 처리되는 주기.
인출 사이클 : 메모리에 있는 명령어를 CPU로 가지고 오는 단계
실행 사이클 : CPU로 가져온 명령어를 실행하는 단계. 제어장치가 명령어 레지스터에 담긴 값을 해석하고, 제어신호를 발생. CPU 실행!
간접 사이클 : 간접 주소 지정 방식에서 명령어를 실행하기 위해 다시 메모리 접근하는 단계
간접 주소 지정 방식 : 오퍼랜드 필드에 유효 주소의 주소를 명시. 가져온 값 (주소) 에 있는 값을 가져와야 하므로 다시 메모리 접근 필요.
인터럽트
인터럽트 : CPU의 작업을 방해하는 신호
동기 인터럽트 ( 예외 ) - 폴트, 트랩, 중단, 소프트웨어 인터럽트
프로그래밍 상 오류. CPU는 하던 일을 중단하고 해당 예외 처리. 예외를 처리하면 다시 본래 하던 작업으로 돌아와 실행 재개.
종류
폴트 : 예외 처리 직후, 예외가 발생한 명령어부터 실행 재개.
트랩 : 예외 처리 직후, 예외가 발생한 명령어 다음부터 실행 재개. 디버깅 시 사용.
중단 : 실행 중인 프로그램을 강제로 중단시키는 오류 발견시 발생.
소프트웨어 인터럽트 : 시스템 호출 발생 시.
비동기 인터럽트 ( 하드웨어 인터럽트 )
과정
키보드, 마우스와 같은 입출력장치가 입력을 받아들이면 CPU에
인터럽트 요청 신호
를 보냄
CPU는 실행 사이클이 끝나고 명령어를 인출하기 전, 항상 인터럽트 여부를 확인
CPU가 인터럽트 여부를 확인하면,
인터럽트 플래그
를 통해 현재 인터럽트를 받아들일 수 있는지 확인
인터럽트를 받아들일 수 있으면, CPU는 현재까지 작업을 백업
CPU는
인터럽트 벡터
를 참조하여
인터럽트 서비스 루틴
을 실행
CPU는 하드웨어 인터럽트 요청을 보낸 대상으로부터 데이터 버스를 통해 인터럽트 벡터를 전달 받음.
인터럽트 서비스 루틴 실행이 끝나면 백업해둔 작업 복구하고 실행 재개
인터럽트 서비스 루틴 == 인터럽트 핸들러. 인터럽트를 처리하기 위한 프로그램. ex) 마우스가 어떤 인터럽트 요청을 보내면, 어떻게 작동한다.
인터럽트 벡터 : 인터럽트 서비스 루틴을 식별하기 위한 정보. 인터럽트에 해당하는 인터럽트 서비스 루틴의 시작 주소를 찾아가도록 함.
미션
p.125 2번
김민영
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=
팔로우
이전 포스트
혼공컴운 챕터 1, 2, 3
다음 포스트
혼공컴운 챕터 5. CPU 성능 향상 기법
0개의 댓글
댓글 작성