일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 큐 자바 코드
- rxjava cold observable
- jvm 작동 원리
- 안드로이드 라이선스 종류
- 안드로이드 레트로핏 crud
- 안드로이드 os 구조
- 스택 자바 코드
- 서비스 vs 쓰레드
- jvm이란
- 안드로이드 레트로핏 사용법
- 자바 다형성
- 클래스
- 서비스 쓰레드 차이
- 안드로이드 유닛 테스트 예시
- 안드로이드 라이선스
- 안드로이드 유닛 테스트
- 2022 플러터 안드로이드 스튜디오
- 스택 큐 차이
- ANR이란
- android retrofit login
- rxjava hot observable
- 멤버변수
- 안드로이드 유닛테스트란
- rxjava disposable
- Rxjava Observable
- ar vr 차이
- 객체
- android ar 개발
- 2022 플러터 설치
- 플러터 설치 2022
- Today
- Total
나만을 위한 블로그
[혼공컴운] 4. CPU의 작동 원리 본문
ALU : 계산하는 부품. 계산하기 위해 피연산자, 수행할 연산이 필요. 그래서 레지스터를 통해 피연산자를 받고 제어장치를 통해 수행할 연산을 알려주는 제어 신호를 받음
연산 수행 결과는 특정 숫자, 문자가 될 수도 있고 메모리 주소가 될 수도 있다. 이 결과는 바로 메모리에 저장되지 않고 잠깐 레지스터에 저장된다. CPU가 메모리에 접근하는 속도가 느리기 때문에 프로그램 실행 속도가 느려질 수 있어 레지스터에 저장한다.
플래그 : 연산 결과에 대한 추가적인 상태 정보. ALU가 내보내는 대표 플래그는 아래와 같다. 플래그들은 플래그 레지스터에 저장된다.
- 부호 플래그
- 제로 플래그
- 캐리 플래그
- 오버플로우 플래그
- 인터럽트 플래그
- 슈퍼바이저 플래그
제어장치
제어장치 : 제어 신호를 내보내고 명령어를 해석하는 부품. 제어 신호는 컴퓨터 부품들을 관리하고 작동시키기 위한 전기 신호
제어장치가 받아들이는 정보들은 아래와 같다.
- 클럭 신호 : 클럭은 컴퓨터의 모든 부품을 움직일 수 있게 하는 시간 단위다. 컴퓨터 부품들은 클럭이란 박자에 맞춰 작동하지만 한 박자마다 작동하는 건 아니다
- 해석해야 할 명령어 : CPU가 해석해야 할 명령어는 명령어 레지스터에 저장된다. 제어장치는 명령어 레지스터에서 해석할 명령어를 받아들여 해석하고 제어신호를 발생시킨다
- 플래그 레지스터 속 플래그 값
- 제어 버스로 전달된 제어 신호
제어장치가 내보내는 정보는 2종류 있다.
- CPU 외부에 전달하는 제어 신호 : 제어 버스로 제어 신호를 보내는 것과 같음. 메모리 or 입출력장치에 전달하는 제어 신호가 있음
- CPU 내부에 전달하는 제어 신호
레지스터
알아야 하는 8개 레지스터
- 프로그램 카운터
- 명령어 레지스터
- 메모리 주소 레지스터
- 메모리 버퍼 레지스터
- 플래그 레지스터
- 범용 레지스터
- 스택 포인터
- 베이스 레지스터
프로그램 카운터
메모리에서 읽을 명령어의 주소를 저장하는 레지스터. 명령어 포인터라고 부르는 CPU도 있음
명령어 레지스터
방금 메모리에서 읽은 명령어를 저장하는 레지스터. 제어장치는 이 안의 명령어를 받아서 해석하고 제어 신호를 내보낸다
메모리 주소 레지스터
메모리 주소를 저장하는 레지스터. CPU가 읽으려는 주소 값을 주소 버스로 보낼 때 메모리 주소 레지스터를 거친다
메모리 버퍼 레지스터
메모리와 주고받을 데이터, 명령어를 저장하는 레지스터. 메모리에 쓰고 싶은 값이나 메모리로부터 전달받은 값은 이 레지스터를 거친다. CPU가 주소 버스로 내보낼 값이 메모리 주소 레지스터를 거친다면 데이터 버스로 주고받을 값은 메모리 버퍼 레지스터를 거친다
범용 레지스터
일반적인 상황에서 자유롭게 쓸 수 있는 레지스터. 데이터, 주소를 모두 저장할 수 있다. 메모리 주소 레지스터는 주소 버스로 내보낼 주소값만 저장한다는 차이가 있다
플래그 레지스터
연산 결과, CPU 상태에 대한 부가 정보를 저장하는 레지스터
스택 주소 지정 방식
스택 포인터, 베이스 레지스터 : 스택 주소 지정 방식이란 주소 지정 방식에 사용됨
프로그램 카운터, 베이스 레지스터 : 변위 주소 지정 방식에 사용됨
스택 주소 지정 방식 : 스택, 스택 포인터를 사용한 주소 지정 방식. 스택 포인터는 스택에 마지막으로 저장한 값의 위치를 저장하는 레지스터다. 스택은 메모리 안에 스택 영역이란 형태로 영역이 정해져 있다.
변위 주소 지정 방식
오퍼랜드 필드의 값(변위), 특정 레지스터의 값을 더해 유효 주소를 얻는 주소 지정 방식
변위 주소 지정 방식은 오퍼랜드 필드의 주소, 어떤 레지스터를 더하는지에 따라 상대 주소 지정 방식, 베이스 레지스터 주소 지정 방식 등으로 나뉜다
상대 주소 지정 방식
오퍼랜드, 프로그램 카운터 값을 더해 유효 주소를 얻는 방식. 오퍼랜드가 -3이라면 CPU는 읽어들일 명령어로부터 3번째 이전에 있는 명령어를 실행한다
이 주소 지정 방식은 if문처럼 분기처리해서 특정 주소의 코드를 실행할 때 쓰인다
베이스 레지스터 주소 지정 방식
오퍼랜드, 베이스 레지스터의 값을 더해 유효 주소를 얻는 방식. 베이스 레지스터 속 기준 주소에서 얼마나 멀리 떨어진 주소에 접근할 건지를 연산해서 유효 주소를 얻는 방법
명령어 사이클, 인터럽트
명령어 사이클
프로그램 속 명령어들이 반복해서 실행되는 주기. 명령어들은 명령어 사이클이 반복되면서 실행된다.
인출 사이클 : 메모리의 명령어를 CPU로 가져오는 단계. 명령어 사이클의 1번째 과정
실행 사이클 : CPU로 가져온 명령어를 실행하는 명령어 사이클의 2번째 과정
간접 사이클 : 명령어를 실행하기 위해 메모리 접근을 한 번 더 수행하는 단계
인터럽트
CPU의 작업을 방해하는 신호. CPU가 꼭 주목해야 할 때 or CPU가 빨리 처리해야 할 작업이 생겼을 때 발생
동기 인터럽트 : CPU가 발생시키는 인터럽트. CPU가 실행하는 프로그래밍상 오류 같은 예외적인 상황에 마주쳤을 때 발생함. 예외라고도 부른다
비동기 인터럽트 : 주로 입출력장치에 의해 발생하는 인터럽트
하드웨어 인터럽트 : 알림 같은 인터럽트. CPU가 입출력 작업 도중 명령어를 처리하기 위해 알림 같은 하드웨어 인터럽트를 사용한다
인터럽트 플래그 : CPU가 인터럽트 요청을 수행하기 위해 활성화되어 있어야 하는 것. 하드웨어 인터럽트를 받을지 말지 결정하는 플래그. CPU가 중요 작업을 처리해야 하거나 방해받지 말아야 한다면 불가능으로 설정됨. 정전, 하드웨어 고장으로 인한 인터럽트는 막을 수 없음
인터럽트 서비스 루틴(인터럽트 핸들러) : 인터럽트를 처리하기 위한 프로그램
'책 > 혼자 공부하는 컴퓨터 구조 + 운영체제' 카테고리의 다른 글
[혼공컴운] 6. 메모리와 캐시 메모리 (0) | 2023.11.18 |
---|---|
[혼공컴운] 5. CPU 성능 향상 기법 (0) | 2023.11.11 |
[혼공컴운] 3. 명령어 (0) | 2023.11.04 |
[혼공컴운] 2. 데이터 (0) | 2023.10.31 |
[혼공컴운] 1. 컴퓨터 구조 시작하기 (0) | 2023.10.29 |