벤치리뷰·뉴스·정보/고전 스페셜 정보

[고전 2002.01.31] Intel은 IA-32의 64bit 확장 "Yamhill"을 개발하는 이유

tware 2005. 10. 1. 15:00

 

San Jose Mercury News가 폭로하다.

 Intel은 IA-32 아키텍처의 64bit 확장 아키텍처를 비밀리에 개발했다. 이런 뉴스가 지난 주말 난무했다. 진원은 " Intel 's Plan B chip stirs internal debate "(San Jose Mercury News : 02/01/24)에서 Intel 내부에서 개발에 관계하고 있던 직원의 증언을 바탕으로 한 기사라는 것이다.
 기사에 따르면, Intel 버전의 64bit 확장은 "Yamhill Technology"라고 하며 Pentium 4 후속의 차세대 CPU 코어 "Prescott (프레스콧)" 에 구현된다고 한다. AMD의 64bit 확장 "x86-64" 와 같이 기존의 IA-32 아키텍처를 64bit로 확장 한것 같다. 그러나 바로 이 기능이 활성화 된다는 것은 없다고 한다. 기사는 Yamhill 이 백업이라고 전하고 있고 Itanium의 IA-64 아키텍처의 장점을 잃기 때문에 구현은 해도 정말 도입 여부 모른다고 말하고 있다.

 Intel 플랫폼 판 x86-64, 이것은 충격인가? 사실 그렇지도 않다.

 업계 일각에서는 벌써 오래전부터 Intel이 이런 계획을 가지고 있을 거라고 소문이 있었다. 특히 메모리의 관계의 사람들은 그렇게 생각하고 있었다. 그것은 32bit 아키텍처의 상태에서는 메모리의 물리적 탑재 가능한 용량이 증가하면 CPU의 메모리 액세스 공간이 부족하게 되어 버리기 때문이다. 즉, 반도체 측에서 보면 Yamhill 계획은 지극히 당연한 추세인 것이다.

 64bit 아키텍처가 필요한 것은 64bit 연산 능력 때문이 아니라 우선 64bit 어드레싱 때문이다. 32bit 에서는 메모리 주소 공간이 4GB로 제한되어 버린다. 4GB는 한때 무한에 가까운 공간 이었지만, 이제 와서는 벽이 눈앞에 다가왔다. Intel은 이 벽을 깨기 위해 Xeon 제품군은 36bit 어드레싱에서 64GB의 메모리 공간을 지원하고 있다. 그러나 이것은 말하자면 응급 조치로 구조적으로 말하면 64bit 플랫 주소 지정이 바람직하다.

 


어드레싱의 확장 계획을 인정한 Intel의 겔싱어 CTO

 이를 위해 Intel이 준비한 64bit 아키텍처는 "IA-64" 였다. 그러나 IA-64는 IA-32의 확장이 아니라 명령어 세트 수준에서 큰 아키텍처 전환을 목표로 한 것이었다. 즉, 큰 점프다. 따라서 Intel은 IA-32 및 IA-64을 병행하여 개발· 제공하는 것을 계속한 것이다. (그런데 중요한 것은 IA-64는 인텔만의 아키텍처가 아닌 인텔&HP 공동개발 공동 소유 제품 입니다. 생산은 인텔이 전담 할 뿐이구요. 애초에 가장 상부의 서버를 위해서 개발 된 것이구요. HP의 PA-RISC 서버를 대체하는 것도 포함. 그렇기에 IA-64용으로 HP-UX는 당연히 포팅괴고, 경쟁 상대인 솔라리스와 디지탈 유닉스 까지 포팅 됐구요. 아이테니엄 (IA-64)용 윈도 서버도 물론 개발 되구요.  이 기사보다 나중에  HP가 전부 인텔로 넘기기는 하지만요. 또한 x86 명령도 실행 가능하다고는 하지만, x86 CPU 처럼 내부에서 동적 스케쥴링이 안되기 때문에, IA-64로 최적화한 소프트라면 빠르겠지만, x86을 돌리는 성능은 떨어 집니다 (이 능력 조차 초기형 이후에는 빼 버리구요). 이걸로 x86을 대체할 수가 없죠. 즉 초기에는 소프트가 없으니까 x86도 어떻게든 돌릴 수는 있다 정도로 어떻게는 사용성을 강조하고, 조금 자리 잡으면 IA-64 최적화 소프트가 자리 잡을테니 x86 실행 능력은 그동안 잠시 땜질용 정도?죠. 인텔이 과거 서버시장을 어떻게 나누고 공략 하려 했는지는 아래 링크 글을 참고 하세요.).

 

[고전 1998.06.10] Pentium II Xeon으로 서버 시장이 바뀐다


 Intel은 원래의 계획에서는 IA-32의 영역의 상당 부분을 IA-64 로 치환해 가는 속셈 이었다. 즉, 32bit 어드레싱 벽이 오기 전에 IA-64가 침투해 가는 전망이었던 것이다. 어드레싱 제약이 IA-64 전환의 원동력도 된다고 읽고 있었다 라고 생각한다.

 그러나 Intel은 그 계획을 크게 바꾸었다. 현재는 IA-32가 수명을 끝낼 때는 보이지 않는다. 따라서 IA-32 아키텍처에도 64bit 확장이 필요하게 되어 버린 것이다.

 그러면 구체적으로 언제 64bit 어드레싱이 필요한 것인가? 아마 Intel은 2세대 후, 즉 2005 ~ 6 년에 데뷔하는 CPU 아키텍처까지, 64bit (내지는 그와 유사한) 확장을 선택하게 될 것이다.

 실은, Intel의 패트릭 겔싱어 부사장 겸 CTO (Patrick Gelsinger, Vice President & Chief Technology Officer)에게 지난해 9월에 인터뷰 했을때 이 건에 대해 질문했다. 그때 겔싱어는 다음과 같이 대답했다.

[Q] IA-32 아키텍처는 향후 얼마 정도 남아있다 생각하는가?

[겔싱어] 나에게 3개의 시간대가 있다. 내년과 다음 10년과 영원하다 (웃음). IA-32에 대해서는 다음 10년, 대단히 건강하게 남아있는 것에 의문은 없다. 다만 그 앞의 예측은 어렵지만.

[Q] IA-32 아키텍처를 10년 계속하면, 한 가지 문제가 있다. 그것은 32bit 어드레싱이다. 시스템 메모리 탑재량이 계속 증대하기에, 32bit 어드레싱은 10년 이내에 한계에 달한다. IA-32 아키텍처의 64bit 확장은 없는가?

[겔싱어] 10년 이내에 우리가 32bit 이상의 어드레싱을 할 필요가 있는 것은 확실하다. 그러나 앞으로 5년 동안은 32bit 이상의 필요는 없는 것이다. 5 ~ 10 년 사이의 어딘가일 것이다.

 

(32bit 메모리 어드레싱을 하는 CPU의 경우, 최대 사용가능 메모리는 아는 사람은 다 아는 4GB. 32bit라면 2의 32제곱 = 4,294,967,296 개의 수를 셀 수 있음(구분할 수 있음). 즉 이 수 만큼의 주소를 가짐(실제 집주소 생각해도 됩니다. 각 가정도 집 주소가 있기 때문에 택배가 오고가죠. 마찬가지 입니다. 각각의 주소의 데이터를 불러오고 저장하고 각 주소의 데이터끼리 연산하고 하려면 당연히 메모리에 주소를 다 지정해야 합니다.). 이 각각의 주소는 1Byte의 메모리 용량마다 주소를 지정. (각 가정마다 1Byte씩의 용량이 있다고 생각해도) 4,294,967,296 x 1Byte = 4,294,967,296Byte / 1024 = 4,194,304 kByte /1024 = 4,096 MByte / 1024 = 4GB

 

펜티엄프로 에서 36bit PAE (Physical Address Extension 물리 주소 확장) 도입으로 최대 64GB의 실제 메모리 사용 가능. 2의 36제곱 = 68,719,476,736 Byte /1024 = 67,108,864 KByte / 1024 = 65,536 MByte / 1024 = 64GB

 

최초의 IBM PC에 채택된 인텔 8086 16bit CPU는 20bit 어드레싱으로 1MB의 메모리, 같은 16bit CPU 지만 80286은 24bit 어드레싱으로 최대 16MB (보호모드 도입). 80386 부터는 32bit 어드레싱이니까 4GB 까지 주소지정이 가능하죠 (보호모드를 개선해 리얼모드와 전환 가능). 당시로는 실제 4GB램을 장착할 수는 없었지만 말이죠. 그런 고용량 메모리도 존재하지도 않고.. (386 시대는 기껏해야 4MB 메모리를 사용했죠. 나중에 램 증설을 한 사람 일부가 8GB 썼구요. 486 정도에서 보통 8MB 정도 썼고, 펜티엄 정도에서 8MB ~ 16MB 정도를 썼구요. 램 모듈 용량이 아닌 끼워진 전체 용량으로요. 윈도 95의 최소사양도 그래서 그런지 80386에 4MB가 최소사양. 펜티엄은 93년에 첫 출시되지만, 본격적으로 살만한 가격대가 되어서 팔린 시기는 94년 후반에서 95년도 초반부터 본격적 구매. 이런 때가 공정이 한번 바뀌면서 다이 사이즈가 작아지고 대량생산이 가능해서 가격이 낮춰지는 때). 리얼모드가 기본인 바이오스와 도스하에서는 무조건 8086(8088)과 같은 1MB의 기본 메모리와 나머지 메모리로 (연장메모리) 관리하구요. 도스 이후의 운영체제는 보호모드로 동작하죠. 인텔이 PCI, USB, 보드&케이스&파워 규격 ATX (이외 BTX,NLX등),S-ATA, AGP, PCI-E 최후에 EFI 등 까지 총대메고 개발했거나, 일부 소수 관련 업체와 함께 개발해서 IBM 호환 PC라는 말보다 이제는 x86 컴퓨터 라고 하죠. 기존 IBM PC 시절의 것들을 다 대체했으니까요.

 

1024단위가 되는 이유는 2의 10제곱이 1024, 8bit 라면 2의 8제곱 = 256 이기 때문에 그래픽 카드에서 8bit 설정하면 256색, 16bit로 설정하면 2의 16제곱으로 65,536색 사용 가능.예전 고전 게임에서 어떤 능력치 같은게 255가 최대치라면 능력치에 대해서 쓰는 데이터 크기가 8bit 라는 얘기 (0 ~ 255 까지 총 256가지). 

 

좀 다른 얘기지만, 컴퓨터는 이렇게 모두 1024 단위이지만, 하드디스크 업체는  1000 단위로 하드를 제조하기 때문에(실 용량은 과거의 경우 제조사 마다 아주 조금씩 다름. 1000단위 보다는 큰데 1024 단위로는 당연히 작은 용량 안에서...), 1TB 하드를 사서 포맷하면 실제용량이 1TB가 나오지 않음. 사기라고 생각할 수도 있겠지만, 이문제로 아주 예전 이미 미국등에서 소송도 일어났고, 이후로 1000단위라고 하드에 표기.

 

1000 단위 1TB 하드를 1024 단위로 바꿔보면  1,000,000,000,000 / 1024 =  976,562,500 KByte / 1024 = 953,674 MByte / 1024 =  931 GByte가 되죠. 제가 쓰는 2TB 하나도 실용량 계산을 해보면 딱 1,862 (밑에 작은 단위가 있지만 자르고)GByte가 나오네요. 귀신같이 정확히 1000단위 2TB (931 x 2 = 1862). 하드는 현재 48bit LBA 체제이며, 하드는 섹터당 512B (AF 하드는 4KB 섹터) 그러면 2의 48 제곱 x 512Byte = 134,217,728 GB = 131,072 TB  = 128 PB (1000 단위 144PB) 까지 다룰 수 있네요. 하드마다 상부 표기는 조금 다른데, 하드의 용량이 있고 그것과 별도로 LBA  숫자, 또는 섹터 숫자 가 있는데,  거기에 x 512B 하면 용량이 나옵니다 (AF 하드는 섹터의 크기가 4kB). 약자로 쓸 때 B = Byte 이고 b = bit 입니다.)

 


DRAM의 대용량화 에서도 계산되는 Yamhill의 시간

 이렇게, Intel은 2005 ~ 2010 년 (인터뷰는 작년) 사이의 어딘가에서 주소 지정을 확장한다. 겔싱어 씨도 그렇게 말 하니까 확실하다. 또한 이것은 DRAM의 대용량화 추세도 쉽게 계산할 수 있다. 아래 그림의 첫 번째가 PC 메모리 탑재 용량의 트렌드 추측. 두번째가 미드 레인지의 듀얼 프로세서 클래스 서버의 메모리 탑재 용량의 트렌드 추측이다.

 

 

PC 메모리 용량과 CPU의 주소 공간

(가장 아래부터 메모리 1칩당 용량 (메모리 칩은 Byte가 아닌 bit 입니다. 8bit = 1Byte. 대문자 B = Byte, 소문자 b = bit 입니다. 예전 롬팩 게임기의 1M,2M,4M,8M,16M 롬팩도 Byte가 아닌 bit).그 위는 모듈램(양면= 16칩) 용량 128Mb 용량의 칩을 16개 쓰면 128Mb칩 x 16칩 /8 Byte 환산 = 256MB 모듈램, 단면 8칩 모듈램 이라면 용량은 절반. 그 위는 2슬롯 사용시 용량. 가장 위는 CPU 아키텍처 라이프 사이클)

 

 

서버 메모리와 CPU의 주소 공간

(서버는 맨 아래는 당연히 똑같고, 그 위의 모듈램은 서버용은 버퍼칩을 (레지스터드 램) 사용해 최대 32 메모리 칩으로 용량이 2배 (서버용이 레지스터드 (버퍼드) 이기에 PC용 램을 언버퍼드 램 이라고 부릅니다. 이런 이유로 인텔이 시리얼 램인 FB-DIMM을 추진했죠. 어짜피 버퍼칩이 들어가니까 버퍼칩에 시리얼 전송 기능을 넣어서 만들자 라구요). ECC 포함하면 36칩이지만 용량은 동일. 그 위는 8슬롯 사용시 용량. 맨위는 아키텍처 라이프 사이클)

 


 먼저 DRAM 장치. 반도체 산업의 로드맵인 'International Technology Roadmap for Semiconductors (ITRS) "을 보면, 양산 수준의 칩은 다음 일정으로 되어있다.


512Mb 2001년    130nm 공정
1Gb    2004년    90nm 공정
4Gb    2007년    65nm 공정

 최근 트렌드로 하면 실제로는 4Gb 전에 하프 용량 2Gb이 오는 기분이 있다. (4Gb는 65nm시 183 제곱 mm로 예측 다이 사이즈도 크게 과하다.) 우선 ITRS에 따르면 이와 같이 된다. 서버의 경우, 이러한 새로운 대용량 다이가 등장하면 즉시 사용된다. 로드맵과 그다지 차이가​​ 없다. 덧붙여서, Stacked (2 개의 다이를 거듭 패키지) 유형은 더 빨리 나온다.

 한편, PC 쪽은 비트 크로스 (두배 용량 세대에서 bit 당 단가가 동일하게 되는 것)가 올 때까지 대용량 칩은 거의 사용되지 않는다. 참고로, 2002년은 128Mbit 칩에서 256Mbit 칩의 비트 크로스 (= 이행) 해로서, 만약 순조롭게 대용량화 추세가 지속된다면 2년 후 근처에서 512Mbit 칩, 4년 후에 1Gbit 칩으로의 이행이 진행. 여기에는 다른 견해도 있지만, 우선은 이 일정에 따라서 다음과 같이된다.

칩           PC 용    서버용
256Mbit    2002    -
512Mbit    2004    2001
1Gbit       2006    2004
4Gbit       2009?   2007


서버는 4년 후, PC는 6년후 까지 Yamhill이 필요

 다음은 메모리 모듈은 어떻게 될까. 용량을 추정해 보자. PC 용 Unbuffered 일반 메모리 모듈이 최대 16 칩으로 (양면램, 8칩은 단면램) 서버를 위한 일반 Registered가 ECC를 포함하여 최대 36 칩되는 상황이 계속된다고 가정한다. 이것도 어떻게 될지 의문이 있고, 예외도 있지만, 일단 가정하면 아래와 같은 모듈 당 용량이된다.

칩            PC 용    서버용
256Mbit    512MB    1GB
512Mbit    1GB        2GB
1Gbit        2GB       4GB
4Gbit        8GB      16GB



 그러면 이제 시스템 메모리 용량은 어떻게 될까. PC가 Unbuffered 2 슬롯, 서버가 Registered 4 슬롯 × 2 채널 = 8 슬롯이 계속된다고 한다. 그러면 메모리는 다음과 같다.

칩            PC 용    서버용
256Mbit    1GB       8GB
512Mbit    2GB      16GB
1Gbit       4GB      32GB
4Gbit      16GB     128GB

 즉, PC 나 서버 현행 아키텍처에 대응할 수 있는 것은 1Gbit 세대까지 되는 것이다. 거기를 초과 4Gbit 및 2Gbit의 DRAM 칩이 되면 대응을 할 수 없게된다. 즉, PC는 6년후 까지 서버는 4년후 까지 지금의 32/36bit 어드레싱에 대응할 수 있지만 , 그 이후는 주소 지정을 확장하지 않으면 안되는 것 같다. 겔싱어 말했던 일정과 딱 일치한다.
 그래서, Intel의 IA-32 64bit 아키텍처 Yamhill은 절대 확실하게 존재한다. 또 그것은 IA-64의 백업 계획으로도 AMD의 x86-64의 대항 계획도 아니다. 시작은 IA-64 백업했을지도 모르지만, 지금은 Intel에 있어서 필연적 확장이다.

 그리고 만약 2006년에 32bit 이상의 어드레싱이 필요하다고 하면, CPU 코어 아키텍처의 사이클에서 생각하면, Intel은 반드시 다음의 차세대 CPU 코어에 64bit 확장을 해야한다. 그리고 소프트웨어 측의 대응을 생각하면, 그 이전 세대 (Prescott)에서 64bit 확장을 선택하는 것이 바람직 하다. 서버 쪽이 임박한 것을 생각하면, 서버 측에서 우선 발표 될 가능성이 높다. 제멋대로 예측을 하다면 Intel은 우선 Prescott / Nocona (제온용 코드네임)세대에서 우선 서버에서 64bit 아키텍처를 on 하고 다음 CPU 코어 세대 PC에서도 on 하는 것은 아닐까? ...... Hyper-Threading 처럼

 

(실제로도 기자의 예측대로 프레스컷부터 64비트 지원이죠. 물론 제온과 다르게 PC용 프레스컷은 초기형은 아니고 후기형부터 지원되죠. 또한 AMD쪽이 먼저 나왔고, MS가 AMD에 맞추라고 한걸로 알고 있고.. 윈도도 AMD에 맞춰서 64비트 만들고 있고.. (인텔쪽으로는 안만들 거다 라고 MS가 말하고...)... 결국 인텔이 AMD 호환쪽으로 가게 됩니다. (CPU 레지스터 구성이 달랐다고 하구요. 본래 인텔식 64비트가 말이죠. 레지스터 구성이 다르면 호환이 안됩니다. x86(x64) CPU에서 SSE나 AVX 명령을 추가로 도입할 때 당연히 해당 SIMD명령을 처리할 하드웨어도 필요하지만, 레지스터도 신설하거나 확장하죠. 해당 명령은 당연히 새로운 (신설 또는 기존 것 확장) 레지스터를 통해서 연산을 하는 겁니다.). AMD가 약간 먼저 나왔다 보다 (CPU 생산능력과 점유율이 다른데.. 그냥 인텔이 밀어 붙였으면 3Dnow! 처럼 되기 않았을까도...) 윈도가 사실 제일 중요하겠죠.)

 

2002년 1월 31일 기사 입니다.

 

 

[고전 2002.02.14] AMD 차기 CEO 헥터 루이즈 씨 방일

 

 

[분석정보] Intel 915에서 AGP에 대응하는 제품이 전시, ATI의 미발표 노스 브리지도

 

 

[고전 2002.10.04] Pentium 8 후보 Nehalem 아키텍처

 

 

[고전 2003.09.19] EFI 프레임 워크의 도입으로 변하는 BIOS

 

 

[고전 2004.09.13] 32bit 시스템의 EFI 화는 2006년