기글 하드웨어 하드웨어 포럼
컴퓨터 하드웨어에 관한 이야기를 자유롭게 나누는 곳입니다. 컴퓨터 이외에 다른 제품에 대한 이야기는 해당 포럼 게시판을 사용해 주세요.
http://ascii.jp/elem/000/000/632/632999/index-3.html
불도저와 넷버스트 관해서 뒤적거리다 나온 옛기사인데 여기서 재미난걸 찾았습니다.
90nm 세대에서의 테자스의 ES가 150W나 잡수시고 이건 Anandtech에서도 비슷한 이야기가 나오죠.
(http://www.anandtech.com/show/1217)
파이프라인 스테이지 쪼개기가 극단화 된 넷버스트라지만 상당히 심한데 거기에 재미난 원인이 있었군요.
아래 이미지는 인텔이 당시 테자스에 추가하기로 되어있던 Enhanced-HT의 설명입니다.
그런데 이거 어디서 엄청 많이 본 구조입니다.
예. 1개의 코어가 2개의 물리적 쓰레드를 제공하고, 거기서 논리적인 쓰레드를 4개를 지원하는 것입니다.
현재 불도저아키텍쳐에서 주장하는 모듈위에 하이퍼쓰레딩이 또 올라간 형태죠.
이런 형태인 만큼 동일 세대 공정의 프레스캇 대비 1.5배에 달하는 전력소비를 자랑하게 되었던거죠.
인텔이 사실 못한게 아니라 그냥 해보고 삽을 푸고 안해버렸던 것이었군요.
헌데 이 실패가 불도저가 개발에 진입하기 이전에 벌어진 실패였는데 굳이 AMD가 그 실패를 답습한 이유는 살짝 궁금하긴 하네요.
2012.07.03 14:12:04
넷버스트가 실패한 물건이지만 이론적으로는 상당히 좋은 물건이라고 했덜걸로 기억납니다..
일단 넷버스트의 구조의 장점은 작업을 작게 많이 잘라서 처리 할수 있어서.. CPU를 풀로 가동해서 사용 할 수 있고,
이점으로 인해서 멀티 쓰레드의 강한 구조가 만들어 진다고 했던걸로 기억합니다..
근데 이게 인텔도 미쳐 생각 못했던 완전 함정이 었다는게 나중에 발견졌죠!.....
너무 작업을 작게 잘라서 처리 과정이 길어지면서 초반이나 중간에 작업 중 오류가 발생해도 마지막까지 가서야..
오류가 발생한걸 알수 있었고, 이전이나 이후세대 나온 CPU에 비해서도 근 2배 이상의 길이의 작업 프로세스를 갔었던 걸로 기억합니다. 한번에 10개를 동시에 처리해도 그중 한개만 오류가 나도 나머지 9개가 대기해야하는 것도 엄청난 손실이었죠...
이론적으로는 나쁜 구조는 아니였지만 처리 프로세서가 길어 지면서 오류 발생 환룰도 생각보다 많았고, 그로 인한 손실이 컸던걸로 기억합니다. 또한, 지금도 멀티 프로세스를 지원하는 어플리케이션이 많지 않은 상황인데.. 당시에는 이런 구조가 싱글 프로세스를 주로 사용하는 어플리케이션에서는 더욱 쥐약이였구요... 시도는 좋았지만, 현실적으로는 너무 빠른 시도였다고 생각합니다.
일단 넷버스트의 구조의 장점은 작업을 작게 많이 잘라서 처리 할수 있어서.. CPU를 풀로 가동해서 사용 할 수 있고,
이점으로 인해서 멀티 쓰레드의 강한 구조가 만들어 진다고 했던걸로 기억합니다..
근데 이게 인텔도 미쳐 생각 못했던 완전 함정이 었다는게 나중에 발견졌죠!.....
너무 작업을 작게 잘라서 처리 과정이 길어지면서 초반이나 중간에 작업 중 오류가 발생해도 마지막까지 가서야..
오류가 발생한걸 알수 있었고, 이전이나 이후세대 나온 CPU에 비해서도 근 2배 이상의 길이의 작업 프로세스를 갔었던 걸로 기억합니다. 한번에 10개를 동시에 처리해도 그중 한개만 오류가 나도 나머지 9개가 대기해야하는 것도 엄청난 손실이었죠...
이론적으로는 나쁜 구조는 아니였지만 처리 프로세서가 길어 지면서 오류 발생 환룰도 생각보다 많았고, 그로 인한 손실이 컸던걸로 기억합니다. 또한, 지금도 멀티 프로세스를 지원하는 어플리케이션이 많지 않은 상황인데.. 당시에는 이런 구조가 싱글 프로세스를 주로 사용하는 어플리케이션에서는 더욱 쥐약이였구요... 시도는 좋았지만, 현실적으로는 너무 빠른 시도였다고 생각합니다.
2012.07.03 15:05:04
넷버스트의 문제는 일단 그런거보다 좀 더 많은 복합적인 요소가 작용하고 있습니다. 그리고 살짝 잘못 이해하신거 같은데 파이프라인화 하게 되면 작업을 여러단계에 나누어 처리하는 것은 맞습니다만 이것은 쓰레드 개념과 관계가 있는게 아니고 클럭을 올리기 위함입니다. 각 단계에서 수행하는 작업이 작아지면 개개의 단계는 좀 더 높은 클럭으로 작동 시킬 수가 있고 또한 나뉘어 있는 만큼 한 클럭마다 계속 명령어를 구겨넣을 수 있기때문에 여기서 높은 성능을 얻을수가 있어요. 하지만 이게 만능은 아닙니다. 파이프라인이 쪼개진 만큼 각 단계와 단계 사이에서 지연되는 시간이 존재하여 레이턴시를 잡아먹고, 또 다른 쪽으로는 깊은 파이프라인을 구현하기 위해서도 또한 자원이 투입되어야 합니다. 흔히 이야기되는 분기예측의 문제도 있습니다만 넷버스트나 불도저의 경우는 좀 더 직접적인 원인이 따로 있었습니다. 좀 더 직접적인 원인으로는 불도저와 넷버스트는 몇가지 이유가 더 있는데 그중 하나인 L1 캐시의 경우는 비교적 단순한 Write Through로 구현하여 캐시 쓰기 성능이 개차반이 되었습니다. 또 한가지 더 들면 파이프라인의 가늘어졌습니다. 그러니까 연산유닛의 수가 줄어버렸습니다. 한 클럭에 수행할 수 있는 명령의 수가 줄어버리죠. 분기예측의 실패에 따른 페널티는 분기예측기구의 강화로 보완한다고 하더라도 이것은 절대적인 차이기 때문에 극복할 수가 없게 됩니다.
2012.07.03 15:26:51
예압? 당장 불도저의 전세대인 K10과 아이비,샌디브릿지및 그 전세대 코어2의 L1캐시가 Write-back 인데요??? 오히려 WT는 넷버스트 이후로 인텔은 사용하지 않습니다. 그리고 WT 캐시는 그냥 동시에 주르륵 써내려가는거라 쓰기 작업을 하위단계에서 마치는 것과 함께 종료하기 때문에 WB에서와 같은 문제가 발생하지 않아서 좀 더 단순하게 구현됩니다. 대신에 문제는 이러면 쓰기성능이 발목을 잡힙니다. 그리고 사실 시간당으론 구겨넣는 명령어 수가 많아지는건 사실입니다. 각각의 단계가 세분화되었기 때문에 각 단계에서 소요되는 시간이 줄어들고, 그만큼 클럭이 오르니 계속 꾸역꾸역 구겨넣을 수 있게 되죠.
2012.07.03 18:33:15
Prescott 전까지는 Pentium 4 에 L2 캐쉬 성능은 좋았지요. Pentium 4 에 문제점을 살펴본다면:
1. x86 디코더가 한개밖에 되지않았다. Trace Cache 로 문제점을 해결하려 했지만 충분치 않았습니다. Trace Cache 에 명령어가 없는 경우가 잦았기 때문에 디코딩 능령이 Pentium III 에 1/3 이 되는 경우가 흔했습니다.
2. 클럭을 올릴려 파이프라인이 너무 길었다. 명령어가 Trace Cache 에 있는경우에 20 스테이지 였습니다. 분기예측유닛이 굉장히 좋아야했지요.
3. 연산유닛성능이 뒤떨어졌다. Pentium 4 에서는 클럭보다 두배빨리 계산할수 있는 Fast ALU 가 2개 있었지만 실제코드에서는 큰장점을 주지 못했습니다. 기존 ALU 는 한개밖에 되지않았지요. FPU 도 두개중에 하나는 특정 명령어에만 쓰여서 기존 FP 성능도 좋지 못했습니다. 그대신 SSE 연산 성능이 좋아서 그나마 다행이였지요.
그문제들 때문에 Hyperthreading 성능도 발목을 잡았습니다. 파이프라인이 길어지고 클럭이 높아져서 Hyperthreading 에 적합할것 같지 보였지만, 낮은 클럭당 성능과 하나밖에 안되는 디코더는 오히려 Hyperthreading 에 안맞게 되었습니다.
1. x86 디코더가 한개밖에 되지않았다. Trace Cache 로 문제점을 해결하려 했지만 충분치 않았습니다. Trace Cache 에 명령어가 없는 경우가 잦았기 때문에 디코딩 능령이 Pentium III 에 1/3 이 되는 경우가 흔했습니다.
2. 클럭을 올릴려 파이프라인이 너무 길었다. 명령어가 Trace Cache 에 있는경우에 20 스테이지 였습니다. 분기예측유닛이 굉장히 좋아야했지요.
3. 연산유닛성능이 뒤떨어졌다. Pentium 4 에서는 클럭보다 두배빨리 계산할수 있는 Fast ALU 가 2개 있었지만 실제코드에서는 큰장점을 주지 못했습니다. 기존 ALU 는 한개밖에 되지않았지요. FPU 도 두개중에 하나는 특정 명령어에만 쓰여서 기존 FP 성능도 좋지 못했습니다. 그대신 SSE 연산 성능이 좋아서 그나마 다행이였지요.
그문제들 때문에 Hyperthreading 성능도 발목을 잡았습니다. 파이프라인이 길어지고 클럭이 높아져서 Hyperthreading 에 적합할것 같지 보였지만, 낮은 클럭당 성능과 하나밖에 안되는 디코더는 오히려 Hyperthreading 에 안맞게 되었습니다.
2012.07.05 18:06:22
트레이스 캐시의 적중률이 좋지 않았군요. 'ㅅ'; 애시당초 P6보다 퇴보되고 느린 디코더를 커버하기 위해서
L1 명령어 캐쉬를 지우고 트레이스 캐시를 넣었는데 말입니다. 'ㅅ'...
더군다나 넷버스트 이놈때문에 인텔은 메인보드나 케이스 규격도 새로 만들려고 했죠. 아마...
근데 그래도 마케팅적인 공략에는 성공한 CPU이니까 이윤을 추구하는 기업 입장에서는 불편한 녀석이겠죠.
구조 자체는 퇴보했지만 돈은 많이 벌어줬으니까요.
그리고 프로세서 제조사들이 클럭만이 전부가 아니라고 생각하게 되는 계기가 되고
샌디 이후에는 트레이스 캐시가 부활했으니까 기술적으로 의의점이 없다고는 못하겠죠.
결론은 불도저가 죽었슴다. --;
L1 명령어 캐쉬를 지우고 트레이스 캐시를 넣었는데 말입니다. 'ㅅ'...
더군다나 넷버스트 이놈때문에 인텔은 메인보드나 케이스 규격도 새로 만들려고 했죠. 아마...
근데 그래도 마케팅적인 공략에는 성공한 CPU이니까 이윤을 추구하는 기업 입장에서는 불편한 녀석이겠죠.
구조 자체는 퇴보했지만 돈은 많이 벌어줬으니까요.
그리고 프로세서 제조사들이 클럭만이 전부가 아니라고 생각하게 되는 계기가 되고
샌디 이후에는 트레이스 캐시가 부활했으니까 기술적으로 의의점이 없다고는 못하겠죠.
결론은 불도저가 죽었슴다. --;
2012.07.06 17:42:33
90nm 까지는 100nA/um 누설전류에 트렌지스터를 사용하였는데, Prescott 에서 클럭을 올릴려고, 400nA/um 에 트렌지스터로 바꿨습니다. 65nm 에서는 그것을 100nA/um 으로 다시 전환하였지요. 그러니까 Prescott 에서는 프로세스 까지 모두 클럭을 올리는 것으로만 추구하게 됩니다.
누설전류를 10배 차이나게 하면 트렌지스터에 성능은 20-30% 밖에 안올라가는데, 그렇다면 많아봤쟈 10% 클럭올릴려고 누설전류를 4배 늘린것입니다. 누설전류가 전체에 0.1% 를 차지하면 10배 올리는것은 문제가 없지만, 5% 에서 4배 올리는 것은 문제가 되죠.
누설전류를 10배 차이나게 하면 트렌지스터에 성능은 20-30% 밖에 안올라가는데, 그렇다면 많아봤쟈 10% 클럭올릴려고 누설전류를 4배 늘린것입니다. 누설전류가 전체에 0.1% 를 차지하면 10배 올리는것은 문제가 없지만, 5% 에서 4배 올리는 것은 문제가 되죠.
작성된지 2주일이 지난 글에는 새 코멘트를 달 수 없습니다.