CPU 코어는 ALU, 레지스터, 컨트롤러로 구성되는 것으로 압니다.
(1) 멀티코어 CPU에서 코어를 물리적으로 구분하는 기준이 무엇인지 궁금합니다.
(2) 각 코어마다 다이 내 구획이 구분되어 있고, 각 코어마다 ALU, 레지스터, 컨트롤러가 각각 할당되어 있나요?
(3) 코어가 많을수록 더 효율적으로 일할 수 있으므로 결과적으로 처리속도가 높아지나요?
(4) 공정미세화가 되면 1코어 내에 더 많은 레지스터를 배치할 수 있어서 각 코어당 성능이 향상되나요?
2. 네. 단, 다른 자원은 공유할 수도 있고, 레지스터의 경우 분기예측 등을 이유로 한 코어내에도 여러개의 (어셈블리어 상에서 노출된 레지스터수보다 많은 수의) 레지스터가 있을 수 있습니다.
3. 소프트웨어적으로 병렬처리가 구현되어 있으면 그렇겠죠. 아닌 경우 도움 안되고요.
4. 레지스터는 명령어셋에서 직접 다루기떄문에 명령어셋의 변경이 필요해서 골치아픕니다. 물론 위에 말한것처럼 분기예측, 파이프라인 등의 목적으로 쓰는 레지스터들은 늘릴 수 있겠죠. 그러나 일반적으로 말하는 범용 레지스터 (x86이라면 eax, mips라면 r2 등..) 를 기준으로 말하자면 보통은 레지스터가 아니라 캐시를 늘린다고 보시면 됩니다.