티스토리 뷰

컴퓨터과학/CPU

CPU동작(BackEnd)

Teus 2022. 6. 2. 11:47
728x90
반응형

본 포스팅은 "프로그래머가 몰랐던 멀티코어 CPU 이야기" 를 읽고 주인장의 생각을 정리한 게시글 입니다.

책정보, 프로그래머가 몰랐던 멀티코어 CPU 이야기 : 네이버 책 (naver.com)

 

프로그래머가 몰랐던 멀티코어 CPU 이야기

CPU는 그저 복잡한 하드웨어가 아니다!블로그에서 바로 읽는 듯한 생생한 개발 노하우「BOLG2BOOK」시리즈 제 9권 『프로그래머가 몰랐던 멀티코어 CPU 이야기』. 이 책은 기본적인 CPU 구조에 대한

book.naver.com

1. 피연산자 인출(Operand Fetch).

명령어는 이제 준비가 되었습니다. 그럼 이제 이 명령어에서 필요한 Data를 가지고 오는 시간입니다.

 

Fetch에서 알 수 있든, 단순하게 연산에 필요한 Data를 가지고 오는 단계입니다.

 

아래는 피연산자의 예시들 입니다.

//메모리 주소로 피연산자 지정
ld r0, [sp+8]
//레지스터에 상수 지정
add r1, r0, 10
st [sp+4], r1
jz r1, 100

상수의 경우 메모리 해독과정에서 이미 2진수 형태로 값을 알고 있습니다.

 

때문에 따로 메모리를 읽을 필요 없이 바로 read, write가 가능하며 이때문에 immediate라고 부릅니다.

 

메모리 주소형태로 있는 경우 해당 메모리 주소에 가서 값을 읽어온 다음, 상수랑 같은 방식으로 처리가 가능합니다.

 

이때 해당 주소를 계산하는 작업을 고속화 하기 위해서 AGU(Address Generation Unit)을 대부분의 CPU가 가지고 있습니다.

 

이때 이 주소또한 가상화된 주소기 때문에, 실제 주소와 Matching시켜줄 DTLB(Data TLB)를 사용합니다.

 

2. 명령어 실행(Instruction Execution).

이제 명령어도 준비되었고, 피연산자도 준비 되었습니다. 그러면 이제 이 명령어를 실행하는 단계 입니다.

 

일반적으로 CPU 내부에서 ALU라고 불리는 곳에서

2_1. 더하기, 빼기와 같은 산술연산

2_2. 분기문

2_3. 시프트 연산

2_4. SIMD 연산

등이 이뤄집니다.

2010년에 나온 네할렘 프로세시의 경우 아래 10개의 종류의 명령어가 존재
1. 정수 ALU 및 시프트 연산
2. 정수 ALU 및 주소 계산
3. 복잡한 정수 계산
4. 나눗셈
5. 분기문
6. SSE 정수 명령어
7. SSE 정수 곱셈
8. 부동소수점 덧셈
9. 부동소수점 셔플
10. 부동소수점 곱셈

 

이 단계에서는 특별할 것은 없지만, 이 단계에서 실행된 결과를 바탕으로 UpdatePC()가 이뤄지게 됩니다.

 

3. 결과 저장(Write Back/Operand Store).

명령어 실행 후, 반환된 값을 명령어에 지정된 피연산자에 저장하는 단계 입니다

 

수리연산의 결과라면 메모리에 저장되고, 분기문의 결과라면 PC의 값이 변하게 될 것입니다.

 

특별한 내용은 없다고 할 수 있습니다.

 

 

728x90
반응형

'컴퓨터과학 > CPU' 카테고리의 다른 글

명령어 파이프라인(2편)  (0) 2022.06.29
명령어 파이프라인(1편)  (0) 2022.06.03
CPU동작(FrontEnd)  (0) 2022.05.12
CPU의 성능 지표(CPI, IPC, Clock...)  (0) 2022.05.11
가상메모리  (0) 2022.05.10
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
29 30 31
글 보관함