Reference :
- 컴퓨터 구조 및 설계 MIPS EDITION [6판] / David A. Patterson / 한빛에듀
- 건국대학교 컴퓨터구조 강의 / 박능수 교수님
- https://developbear.tistory.com/ (김베어의 개발일지)
CPU = 프로세서
CPU, 프로세서, 코어... 같은 용어인가?
학부 때 항상 느꼈던 궁금점인데, 왜 이제서야 정리를 하게 되었을까... CPU, 프로세서, 코어 ... 같은 용어인거 같기도 하고, 아닌거 같기도 하고... 일단 3가지 용어의 기본 정의부터 살펴보자. - CP
donghoson.tistory.com
전력 한계 문제는 마이크로프로세서 설계에 극적인 변화를 가져왔다.
아래의 그림은 데스크톱 마이크로프로세서의 프로그램 응답 시간 개선 추세를 보여주며, 2002년부터 개선 속도가 둔화되어 매년 1.5배에서 1.2배로 줄어든 것을 확인할 수 있다.
단일 프로세서에서 한 프로그램의 응답시간을 계속 줄여나가는 대신, 2006년에 모든 데스크톱과 서버 회사는 칩에 여러 개의 프로세서를 집적한 마이크로프로세서를 생산하였다. 이는 응답시간보다는 처리량 개선에 더 효과가 있다.
* 프로세서 = 코어
* 마이크로프로세서 = 멀티코어 마이크로프로세서
과거에 프로그래머는 코드를 한 줄도 안 바꾸고 하드웨어와 컴퓨터 구조, 컴파일러의 혁신에만 의존하여도
18개월마다 2배씩의 성능 개선을 누릴 수 있었다.
하지만 오늘날에는 응답 시간을 현저히 개선하려면 다중 프로세서의 장점을 살리도록 프로그램을 재작성해야 한다.
병렬성은 컴퓨팅의 성능에 늘 중대한 역할을 하였으나, 대개 드러나지 않고 숨어있다.
파이프라이닝(Pipelining)
은 명령어의 실행을 중첩시켜서 프로그램을 빠르게 실행시키는 기술로, 명령어 수준 병렬성의 한 예이다.
[하지만 프로그래머가 명시적 병렬 프로그램을 작성하는 것이 어려운 이유 2가지]
1. 병렬 프로그래밍은 정의상 성능을 중시하는 프로그래밍이고, 이것이 프로그래밍의 어려움을 가중시킨다.
이미 정확하고, 중요한 문제를 해결하며, 사용자가 편리한 인터페이스를 제공하는 것도 쉽지 않은데,
그 위에 실행시간이 빨라야 하기 때문이다.
2. 병렬 하드웨어에서 빠르게 수행된다는 것은 각 프로세서가 비슷한 양의 일을 동시에 수행하도록 응용을 분할해야 하고, 병렬성으로부터 얻을 수 있는 잠재적인 성능의 이득을 침해하지 않도록 분할된 일을 스케줄링하고 조정하는 오버헤드가 작아야함을 의미하기 때문이다.
병렬성을 강조하여 하드웨어가 발전해나가는 만큼
프로그래머는 병렬성을 고려하여 성능을 개선시키는 병렬 프로그래밍에 관심을 귀 기울여야 한다.
'컴퓨터 구조 > Ch1. 컴퓨터 추상화 및 관련 기술' 카테고리의 다른 글
오류 및 함정 (0) | 2023.03.28 |
---|---|
6. 전력 장벽 (0) | 2023.03.28 |
[Ch1. 컴퓨터 추상화 및 관련 기술] 5. 성능 *중요* (2) | 2023.03.15 |
[Ch1. 컴퓨터 추상화 및 관련 기술] 4. 케이스를 열고 (0) | 2023.03.15 |
[Ch1. 컴퓨터 추상화 및 관련 기술] 3. 프로그램 밑의 세계 (0) | 2023.03.15 |