일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C++
- 시스템해킹
- 리눅스커널
- write up
- C언어
- pwncollege
- 드론
- Bandit
- 시그널
- Pwnable.kr
- 시스템
- Leviathan
- 어셈블리어
- 리버싱
- 리눅스 커널
- 프로그래밍
- 리눅스
- 알고리즘
- 취약점
- radare2
- 시스템 프로그래밍
- px4
- kernel
- wargame
- pwn.college
- 워게임
- 시스템프로그래밍
- 커널
- 컴퓨터구조
- css
- Today
- Total
Computer Security
#5 컴퓨터 구조2 본문
중앙처리장치
CPU의 구성요소
1.레지스터 집합(Register Set)
-메모리 또는 입출력 장치에서 불러온 값이나 프로세서의 연산 중간 결과값들을 저장하는 고속의 저장장치
-범용 레지스터(General Purpose Register)와 같이 프로그래머가 임의로 사용할 수 있는 레지스터
-특수 목적 레지스터(Special Purpose Register)와 같이 프로세서나 시스템에서 특수한 목적을 위해 사용하는 레지스터
-특수 목적 레지스터(Special Purpose Register)
1.누산기(AC, Accumulator) : ALU에서의 연산 결과값 저장
2.스택 포인터(SP, Stack Pointer): 메모리 스택의 Top 주소 저장
3.프로그램 카운터(PC, Program Counter): 다음에 실행될 명령어의 주소 저장
4.프로세서 상태 레지스터(Processro Status Register)(플래그 레지스터): ALU에서의 연산 결과를 반영하거나 프로세서의 각종 상태들을 저장하는 레지스터
5.명령어 레지스터(IR, Instruction Register): 메모리로부터 읽어 들인 명령어를 저장
6.MAR(Memory Address Register) :주소버스를 나갈때 어떤 주소값이 들어갈지 지정할때, MAR에다 임시로 저장한다.
7.MBR(Memory Buffer Register) : 메모리로 들어오는값을 MBR에 임시 저장한다.
2.산술논리장치(ALU, arithmetic Logic Unit) 와 상태 레지스터(플래그 레지스터)
-ALU는 산술 및 논리 연산을 수행하는 조합회로로, 연산 결과는 일반적으로 누산기 레지스터에 저장된다.
-연산 결과를 반영하는 여러 상태 값들은 상태 레지스터 또는 플래그 레지스터에 저장된다.
3.명령어 실행 사이클
1.인출(Ferch):명령어를 메모리로부터 가져온다.
- 주기억장치로부터 수행할 명령어를 CPU로 가져오는 단계
- 하나의 명령을 수행한 후 다음 명령을 메인 메모리에서 CPU로 꺼내 오는 단계
- 명령어의 Operand가 간접 주소일 경우: Indirect Cycle로 진행
- 명령어의 Operand가 직접 주소일 경우: Execute Cycle로 진행
2.해독(Decode): 명령어를 해독한다.
3.실행(Execute): 해독된 명령어를 실행한다.
- 명령의 해독결과 이에 해당하는 타이밍 및 제어신호를 순차적으로 발생시켜 실제로 명령어를 실행하는 단계
- 명령어 코드를 해독하고, 그 결과에 따라 필요한 연산들을 수행
- 실행 사이클에서 수행되는 마이크로 연산들은 명령어에 따라 다름
간접 사이클(Indirect Cycle)
명령어의 Operand가 간접주소 지정이 된 경우 유효 주소를 계산하기 위해 주기억장치에 접근하는 단계
- 명령의 실행을 위해 Execute Cycle로 진행됨
- 명령어에 포함되어 있는 주소를 이용하여, 그 명령어 실행에 필요한 데이터의 주소를 인출하는 사이클
인터럽트 사이클(Interrupt Cycle)
- 인터럽트 발생시 인터럽트 처리를 위한 단계
- 인터럽트에 대한 처리가 완료되면 Fetch Cycle 진행
PC에서 -> MAR -> Address Bus -> 메모리 -> Data Bus -> MBR (진행되면, 자동으로 PC는 PC+1로 값 증가.)
->IR(Instruction Register) 바이너리코드 저장->CU(Control Unit)안에서 해독 과정 -> Register Set 명령어 실행(Execute)
4. 폰 노이만 구조와 하버드 구조
-폰 노이만 구조: 프로그램과 데이터를 하나의 메모리에 저장하는 구조
-프로그램(코드) 메모리와 데이터 메모리가 구분되어 있지 않다.
-따라서 프로세서와 메모리 사이에 하나의 버스를 가지고 있다.
-하버드 구조: 프로그램 메모리와 데이터가 분리되어 있는 구조
-따라서 명령용 버스와 데이터용 버스가 물리적으로 분리되어있다.
-명령어를 읽는 것과 데이터를 읽는 것을 동시에 수행할 수 있다.
3.버스 인터페이스 장치(BIU, Bus Interface Unit)
-1.Address Bus
-2.Data Bus
-3.Control Bus
밖에서 안으로 가져올 때, 중간다리 역할을 해준다.
4.제어 장치(CU, Control Unit)
-명령어를 메모리로부터 읽어드린뒤, 읽어드린 명령어를 해독하여 어떤 명령어인지 파악이 되면, 그에 맞는 제어신호를 생성하여 Control Bus로 내보내거나 CPU안에서 작용한다.
'컴퓨터구조&어셈블리어' 카테고리의 다른 글
#7 x86의 구조 (역사) (0) | 2022.05.19 |
---|---|
#6 컴퓨터구조와 명령어 (0) | 2022.05.16 |
#4 컴퓨터 구조1 (0) | 2022.05.14 |
#3 어셈블리어 스택 (0) | 2022.05.13 |
#2 어셈블리어 연산,비교,분기 (0) | 2022.05.12 |