출처 - http://blog.naver.com/evenwind6/140012170372


ㅁCPU > 1. CPU의 일반적 구조

 

CPU가 없는 컴퓨터를 상상할 수 있는가? 컴퓨터에서 CPU가 차지하는 역할은 사람의 두뇌와 같다. 연산하고 제어하는 일을 담당하는 CPU의 생김새와 역할을 살펴보자.

  ㅁ방열판, 쿨링팬

CPU의 동작 과정 중에는 열이 많이 발생한다. 발열이 많은 CPU는 오동작을 일으키기 쉬우므로 CPU를 냉각시키는 것은 중요한 일이다. 일반적으로는 방열판과 쿨링팬이 많이 사용된다. 펜티엄Ⅱ의 SECC 패키지는 완전히 플라스틱 카트리지로 막혀진 형태로 쿨링팬을 기본으로 사용했으나, 펜티엄Ⅲ의 SECC2 패키지는 코어 부분이 개방된 형태로 방열판과 쿨링팬을 동시에 사용할 수 있다. 방열판은 공기와 접하는 면적을 많게 해 CPU의 온도를 식히는 방식이며, 쿨링팬은 강제적으로 외부의 공기를 유입시켜 냉각시키는 방법이다.

  ㅁ1차 캐시

아무리 메모리의 속도가 빠르다 하더라도 CPU의 클럭 속도를 따를 수는 없다. 결국 CPU는 명령을 처리한 후에 메모리로 그 결과를 보내고 다시 새로운 데이터가 전송되어 오는 시간 동안 아무 일도 할 수 없게 된다. 메모리는 CPU가 필요로 하는 만큼의 데이터를 공급해 줄 수 없는 것이다. 그래서 CPU는 자체적으로 캐시(Cache)라는 빠른 속도의 메모리 공간을 두고 있다. 캐시는 1차 캐시, 2차 캐시가 있으며, AMD의 K7은 3차 캐시까지 사용할 것으로 알려지고 있다. 1차 캐시는 L1 캐시, 내부 캐시라고도 하며 CPU 내부에 위치하고 있다. 1차 캐시에는 최근에 CPU가 사용한 데이터나 명령어가 저장되어 있다. CPU가 새로운 데이터를 필요로 하면, 우선 1차 캐시를 살펴본다. 1차 캐시는 프로세서의 클럭과 같은 속도로 동작하며, 데이터와 명령어를 저장하는 공간이 각각 마련되어 있다. 펜티엄Ⅲ의 1차 캐시는 32KB이다."

  ㅁALU, CU

CPU는 크게 산술논리연산장치(Arithmetic Logic Unit)와 제어장치(Control Unit)로 구성된다. ALU는 덧셈, 곱셈 등과 같은 산술연산을 처리하며, CU는 CPU에서 실행되는 연산에 대한 조정 역할을 맡는다. 캐시나 메모리를 통해 읽어 들여진 데이터는 레지스터(Register)라는 CPU내의 저장 공간에 적재된 후 처리된다. "

  ㅁ패키징과 인터페이스

CPU는 기본적으로 연산을 하는 장치이며 연산에 필요한 명령어와 데이터는 메인메모리에 위치하고 있다. 인텔의 펜티엄 MMX, 또는 AMD 등의 K6-III까지 볼 수 있는 정사각형 형태의 패키지(PGA라고 부른다)는 메인보드에 L2 캐시를 두게 되고 핀을 통해 데이터를 주고받는다. 하지만 펜티엄Ⅱ에 들어서게 되면서부터 L2 캐시가 패키지 안에 포함되고 슬롯 인터페이스를 통해서 데이터를 교환하게 되었다. 펜티엄Ⅱ이후부터 선보인 SECC 패키지는 기존의 소켓 방식이 아닌 슬롯(Slot)이라는 인터페이스를 사용하며, 펜티엄Ⅱ, Ⅲ의 경우는 슬롯1, 서버용 프로세서인 제온은 슬롯2 규격을 사용한다. AMD를 비롯한 호환 칩 제조사는 전통적으로 소켓 타입의 CPU를 생산하고 있으나 AMD의 차세대 CPU인 K7는 인터페이스는 SECC 패키지에 슬롯A라는 인터페이스를 사용할 것으로 알려지고 있다."

  ㅁ2차 캐시

외부 캐시 또는 L2캐시라고도 하는데, PGA 방식의 CPU에서는 SRAM을 사용하는 2차 캐시가 메인보드에 장착되어 있었기 때문에 외부 캐시라고 부른다. 인텔의 경우 펜티엄Ⅱ부터는 SECC(Single Edge Contact Catridge) 패키지 안에 L2 캐시를 포함하여 더욱 속도를 빠르게 했고, K6-Ⅲ 역시 CPU 내에 2차 캐시를 포함하였다. CPU가 1차 캐시에서 데이터를 찾을 수 없으면 2차 캐시에서 필요한 데이터를 찾게 된다. 2차 캐시에서도 필요한 데이터를 찾지 못하면 비로소 메인 메모리에 접근한다. 펜티엄Ⅲ의 2차 캐시는 CPU 클럭의 반(Half-Speed)으로 동작하며, 512KB의 용량이다."
 

아까 녹스사장님께서 L3 캐쉬에 대해 물어보셔서 걍 간단하게 개념만 알려드리자고 썼었는데,

시간이 너무 널널하고 할일도 없기에 기본적인 개념 공유차 CPU와 L1~3 캐쉬 등에 관해 끄적여 봅니다 ㅋㅋㅋ

(이미 아시던 분은 걍 창 닫으시고 혹시나 모르시던 분 있으시다면 참고하세요 ^^)

 

먼저 피씨 부품을 보면 필수적으로 CPU(중앙처리장치)와 주기억장치(메모리-ROM, RAM), 보조기억장치(하드디스크)로 크게 나뉘죠.

컴퓨터가 연산을 한다함은 어떠한 데이터를 각각의 명령어에 의해 계산하는 것을 의미하겠죠...

이때 CPU가 연산을 하기 위해서는 연산을 위한 데이터와 이를 계산해 낼 명령어가 필요합니다.

일단 CPU가 연산을 하기 위한 데이터의 흐름을 한번 알아보죠.

CPU가 연산을 위해 참조하는 데이터의 위치 순서는 다음과 같습니다.

 

CPU (or 레지스터) -> level 1 캐쉬 -> level 2 캐쉬 -> (Level 3 캐쉬) -> North bridge(CPU나 GPU쪽으로 주기억장치와 보조기억장치를 연결해주는 interface를 담고 있는 장치) -> 메모리 -> 하드....순입니다.

 

캐쉬란 무엇일까요? 간단히 말씀드리면 자주 쓰여질 가능성이 높은 데이터를 보다 빨리 빼쓰기 위해 미리 데이터를 빼내어 올려놓기위한 공간입니다. Level 캐쉬나 윈도우상의 시스템캐쉬(보통 하드의 공간으로 할당시키죠), 인터넷 캐쉬등등이 이에 해당합니다.

 

이제 CPU가 연산을 시작합니다.  CPU는 어떤 연산을 위해 필요한 데이터를 최초 L1캐쉬(이곳은 연산을 위한 각종 명령어와 필수 데이터가 올려지게 됩니다.)를 참조하여 연산을 수행합니다. 그러나 공간상의 제약으로 L1캐쉬에 올려지지 못해 데이터가 없을경우는 차순위인 L2캐쉬를 참조합니다. 또한 공간상의 제약으로 L2캐쉬에 올려지지 못해 필요한 데이터가 없을경우는 그 차순위인 L3캐쉬를 참조합니다. 다음은 당연히 North Bridge를 거쳐 우리가 흔히 말하는 램을 참조하게 되죠.. 거기에도 데이터가 없다면 최 하위레벨인 하드디스크를 참조하게 됩니다. 간단하죠? 역으로 CPU가 불러들일 확률이나 가능성이 높은 데이터 위주로 상위 레벨로 데이터가 미리 올려지게되고 공간이 부족할경우 한단계 아래로 밀린다고 생각하시면 되겠습니다.

 

여기서 데이터 처리 속도는 어떨까요? 데이터의 처리속도는 보통 bps로 나타내죠? 초당 바이트수... 보통 대역폭이라고 하는것과 같은 개념이죠. 우리가 램을 듀얼로 구성하는게 좋네 나쁘네 이야기 할때 역시 이 대역폭이 두배로 늘어나기 때문입니다.

그럼 데이터 처리속도는 어떨까요? 당연히 상위레벨로 갈수록 처리 속도는 급격히 증가합니다. 그럼 무한정 최상위 레벨을 크게 하면 좋을텐데 왜 항상 최상위가 가장 적고 아래로 내려올수록 용량이 증가할까요? 그것은 가격이죠 ^^ 상위레벨로 갈수록 가격이 엄청나게 커집니다. 한 예로 CPU 가격의 대부분이 L1, L2 캐쉬메모리가 차지한다고 하면 말 다했죠 ^^

 

이때, 데이터의 처리속도에서 급격한 차이를 보이는 부분이 north bridge를 기점으로 합니다. 따라서 CPU나 GPU는 여기서 발생되는 데이터의 병목현상을 해결하기 위해 자체의 메모리를 따로 갖게 되는 겁니다.

(아주 오래전에는 CPU나GPU에 메모리가 없이 시스템 메모리가 다일때도 있었죠^^)

 

여기서 간혹 이런 이야기를 할때가 있습니다.

클럭이 높은게 빠르냐, L1캐쉬가 높은게 빠르냐, L2캐쉬가 높은게 빠르냐....등등.....

이것은 상황에 따라 다르다고 이야기를 할수밖에 없습니다.

예를들어 똑같은 양의 캐쉬를 달고 있다면 당연히 클럭이 높은게 빠르죠 ^^

꺼꾸로 똑같은 클럭이라면 보다 상위레벨 캐쉬량이 많을수록 따봉입니다.

이것은 데이터가 빨리 올라왔다고 할지라도 연산속도가 느리면 말짱 꽝인것과 마찬가지로 연산속도가 빠르나 연산할 데이터가

늦어서 놀고 있어도 마찬가지이기 때문입니다.

 

만약 동일 클럭의 시퓨가 하나는 L1캐쉬가 128kb이고 또하나는 256kb라고 가정합시다..

이경우 어떤게 빠를까요? 256이 빠를까요? 답은 그럴수도 있고 아닐수도 있다입니다.(상황이 중요하죠.)

만약 처리할 일이 128kb 이내에 해결될 연산이라면 두 씨퓨는 당연히 동일한 속도를 나타냅니다.

허나 128을 넘어서면 어떨까요? 그경우 하나는 L2 캐쉬를 엑세스 하게 되고 또하나는 L1 캐쉬로 끝납니다.

당연히 L1캐쉬가 256짜리가 빠르게 됩니다. 이런식으로 처리속도차가 발생합니다.

(이 개념은 씨퓨가 듀얼이냐, 트리플이냐, 쿼드냐에도 적용되는 개념입니다.)

꺼꾸로 하나의 시퓨가 클럭이 아주 약간 낮고 L1 캐쉬가 허벌나게 많다고 한다면 어떨까요?

상황에 따라 클럭이 낮은 씨퓨가 더 빠른 연산을 할 가능성도 있습니다.

그러나 보통은 해당 씨퓨가 연산하는데 기본적으로 필요한 양의 L1, L2 캐쉬를 달고 나오기 때문에 클럭이 높은게

연산이 빠르다는것이 사실이죠 ^^

 

또한 상대적으로 비교한다면

L1 캐쉬 양이 많은데 L2캐쉬양이 약간 적다고 할때 보통 연산속도는 L1캐쉬가 많은쪽이 더 빠릅니다.

L2 캐쉬 양이 많은데 L3캐쉬가 없거나 적다고 할때는 L2 캐쉬양이 많은쪽이 보다 연산속도가 빠릅니다.

기본적으로 L3캐쉬와 일반적인 램과의 처리속도는 비교할 수준이 안됩니다. 따라서 L3 역시 없는것보다 많은것이 훨신 좋다고

할수 있습니다.

 

끝으로 L3캐쉬... 이거 없는 것도 있고 있는것도 있죠 ^^

예전에는 씨퓨는 단지 코어만 있고 자체 L1캐쉬도 없을때가 있었습니다. 그러다 처리속도를 증가시키기 위해 최초 L1캐쉬를 코어

외부에 달고 L2캐쉬를 일반 SDRAM을 쓰는 형태로 바뀌었죠..(그게 아마도 기억할지 모르겠는데 아주 오래전 슬롯방식의 CPU입니다.) 그러다 L1 캐쉬자체를 코어 내부로 넣으면서 이전에 L1이 차지하던 공간이 남게되고 그 곳을 L2캐쉬가 대체하게 되었죠.

이제는 L1, L2까지 코어 내부로 들어가고 남은 자리를 L3가 메우기도 하는 것입니다.

 

음.. 역시 잡담하다보면 시간이 잘 가는군요 ㅋㅋㅋ 혹시 궁금해 하시던 분들이 있으시다면 도움이 되길 바라겠습니다.

솔찍히 말재주가 없어서 이해가 가실런지는 잘 모르겠네요 ㅋㅋㅋㅋ

 

글 다쓰고 매장 보는 순간 눈에서 쓰나미가 감도네요 ㅠ.ㅠ 어흑.. 낮에는 괜찮았는데 이 뭥미 ㅠ.ㅠ

+ Recent posts