2011-03-03 4 views
33

요즘 내가 스스로에게 묻고있는 진짜 질문은 x86이 빅 엔디안 아키텍처가 아닌 리틀 엔디안 아키텍처라는 디자인 선택이 무엇 이었는가?x86 리틀 엔디안은 왜입니까?

+0

디자인 상충 관계. 몇 가지 예를 보려면 http://en.wikipedia.org/wiki/Endianness#Optimization을 참조하십시오. –

답변

2

메모리 크기를 바이트 단위로 구성하는 것을 고려할 때와 단위 크기를 변경할 수있는 단위 (byte, word, dword 등)를 한 번에 단위로 구성하는 것을 고려할 때의 차이점을 반영합니다.

51

크게, 같은 이유로 추가 할 때 최하위 숫자 (오른쪽 끝)부터 시작합니다. 왜냐하면 carry가 더 중요한 자릿수로 전파되기 때문입니다. 최하위 바이트를 먼저 놓으면 옵셋의 첫 번째 바이트 만 읽은 후 추가에서 프로세서를 시작할 수 있습니다.

어셈블리 코딩과 디버깅을 충분히 해본 후에 리틀 엔디안이 아닌 이상한 선택이 될 수 있습니다. 우리 인류가 빅 엔디안을 사용하는 것은 이상합니다.

+12

부채꼴 : 인간은 대부분 숫자를 읽고 때로는 계산을 위해 사용합니다. 또한 빅 엔디안을 고려할 때 대용량을 처리 할 때는 정확한 숫자가 필요하지 않습니다. 빅 엔디안은 사람에게 현명한 선택입니다. – qff

+0

@qff 빅 엔디안에서 가장 중요한 자릿수에서 왼쪽에서 오른쪽으로 읽을 수 있기 때문에 숫자의 크기 순서를 더 쉽게 이해할 수 있습니까? 일반적으로 오른쪽에서 왼쪽으로 읽는 사람들은 어떻습니까? –

+12

아라비아어는 오른쪽에서 왼쪽으로 쓰여져 번호 매기기 시스템의 방향을 설명 할 수 있습니다. 실제로는 리틀 엔디안입니다. – pyon

33

이것은 상당히 고고 학적이지만 인텔의 선택이 아닌 것 같습니다. 인텔은 이전 버전과의 호환성을 중시하는 프로세서를 설계하여 어셈블리 코드를 구형 아키텍처에서 새로운 아키텍처로 기계적으로 쉽게 변환 할 수 있도록했습니다. 그로 인해 클럭은 8086에서 8080으로 줄어들어 엔디안이 중요했던 첫 번째 마이크로 프로세서 인 Intel 8008이되었습니다.

데이터 터미널 제품에 대한 도움을 요청하기 위해 CTC (나중에 DataPoint라고 함)가 인텔에 왔을 때 해당 프로세서가 시작되었습니다. 원래 Victor Poor와 Harry Pyle이 디자인 한 MSI (많은 칩)에는 논리적 프로세서 설계가있었습니다. 그들은 인텔에 512 비트 시프트 레지스터를 사용하여 스토리지 솔루션을 제공하도록 요청했습니다.

인텔의 가장 좋아하는 제품이 아니기 때문에 1024 비트 RAM 칩의 상승 시간을 견뎌 내기 위해 이러한 종류의 맞춤 디자인 작업을 수행했습니다. Tedd Hoff, Stan Mazor 및 Larry Potter는 디자인을보고 RAM.instead가있는 LSI 프로세서를 제안했습니다. 그 결과 결국 8008이되었습니다. Poor와 Pyle은 명령어 세트를 설계하는 데 사용되었습니다.

그들이 리틀 엔디안을 선택한 것은 this interview with Poor에서 신뢰할 수 있습니다. 따라서, 예를 들어, 저장 번호 최하위 바이트가 먼저 사실에서 온 : 그것은 오히려 빨리 그것을 통해 건너 뛰고 인터뷰는 오히려 흩어 샷되지만 관련 부분을 24 페이지의 :

Shustek 이것은 시리얼이었고 먼저 낮은 비트를 처리해야했습니다.
가난한 사람 : 그런 식으로해야했습니다. 너는 선택의 여지가 없었다.

"선택의 여지가 없다"는 말은 이상합니다. 이는 MSI 프로세서의 비트 직렬 디자인에만 적용되는 것처럼 보입니다. 또한 그들은 RAM 대신 시프트 레지스터를 구매 한 이유도 있습니다.
이 불쌍한 ... 당신이 디자인 또는 그 세부 사항의 약 그들로부터 푸시 백업 중 하나를 기억하십니까 :

Hendrie : 그것은 34 페이지에 다시 온다의 하나 그것들은 8 비트 대 1 비트였습니다. 그들은 8 비트 폭의 파트를 원했고, 궁극적으로는 입니다.
가난한 사람 : 그러나 그것은 아직도 재순환 중입니다. 그러나 흥미로운 점은 이 될지, 아니면 그 시점에서 큰 부분이나 약간의 부분이 변경 될 수 있는지 여부입니다.하지만 우리는 그렇지 않았습니다. 우리는 방금 그것을 남겼습니다 ...
헨드리 : 8 비트로 간 후에도?
가난한 사람 : 오른쪽. 인텔 제품 라인 오늘

궁극적 CTC는 8008을 사용하지 않았다 방법입니다 이유입니다, 너무 늦게 해 끝난 후 그들은 벌써하여 MSI 프로세서를 구현 하였다. 마이크로 프로세서 디자인은 확실히 CTC의 지적 재산 이었지만 설계 비용에 대한 인텔의 권리를 교환했습니다. 약간의 실수 : 나중에 특허권에 관한 법률 소송이 뒤 따른다.

인텔은 직렬 포트가 작동하는 방식 때문에 리틀 엔디안으로 끝났습니다.

+0

흠, 아주 좋은 답변입니다. 직렬 포트가 직렬로 작동한다고 올바르게 말할 수 있습니다. 케이스가 빅 엔디안 인 경우 모든 작업에서 CPU가 낭비되는 것입니다. 나는 두 번째 질문이 여전히 리틀 엔디안 인 것을 올바르게 이해한다고 생각합니다. 시리얼 포트가 유산이라고 생각합니다. 그렇지 않나요? 아니면 여전히 리틀 엔디안으로 설계해야하는 다른 이유가 있습니까? – FZE

+2

아키텍처 변화에 따라 프로그램을 호환 가능하게 유지하는 것은 엔디안 선택과 관련이 있습니다. 시리얼 포트는 임베디드 디자인에서 흔히 볼 수있는 레거시가 아니며 많은 USB 및 블루투스 디바이스 벤더들은 디바이스 드라이버에서 시리얼 포트를 에뮬레이트함으로써 시리얼 포트 API를 통해 디바이스에 인터페이스를 제공합니다. –

+0

추가 설명을 위해 고맙습니다. – FZE

관련 문제