컴퓨터의 역사를 살펴보다 보면 메모리의 데이터 저장방식을 비교하면서 Little endian과 big endian에 대한 이야기가 나온다.
endian = 인디언?... 아니다 이건 엔디언이라는 용어인데 사전을 찾아봐도 당체 나오지가 않는다. 

이 두 용어가 어디서 나온 용어인지 알아보기 위해 검색을 해 보았다.
.... 걸리버 여행기에서 나온 단어라니...음... 그렇군... 그런데 무슨 내용이지??
....
좀더 찾아보았다.

" 걸리버 여행기에서 릴리풋 국과 비에푸스쿠 국이 전쟁을 벌인 이유가
삶은 계란의 뽀죡한 쪽(Little-endian)을 깨야 하는지, 둥근 쪽(Big-endian)을 깨야 하는지의 논란에서 시작되었다"
...라고 한다.

무슨 내용이 있겠지만 의미 없는 논쟁이 될 것 같다..삶은 계란의 뾰족한 쪽인지 둥근쪽인지가 뭔 대수지...

음 잡설은 이만하고 big-endian and little-endian에 대해서 자세히 알아보자.(영어가 싫으신 분들을 위해 리틀 엔디언 & 빅 엔디언으로 적겠다)

이 두 단어를 간략하게 정리해서 설명하자면 리틀 엔디언은 메모리의 작은 번지에 데이터의 자리수가 작은값을 저장하는 방식이고 빅 엔디언은 작은 번지에 데이터의 자리수가 큰 값이 저장된다. 즉 '12345678'를 저장한다고 할때  0x1000번지부터 0x1003번지 까지 값이 저장된다고 가정 해보자.
그럼 빅 엔디언은 0x1000번지에 12부터 0x1003번지에 78이 들어갈 것이고, (12가 상위 바이트, 78이 하위 바이트)
    리틀 엔디언은 0x1000번지에 78부터 0x1003번지에 12가 들어갈 것이다. (12가 상위 바이트, 78이 하위 바이트)

표를 같이 보면서 이해를 해보자.

   '12345678'을 입력했을 경우

메모리 번지

 0x1000

0x1001

0x1002 

0x1003 

빅 엔디언

 12

34 

56 

78 

리틀 엔디언

 78

56 

34 

12 

음 이해가 가시는가?

그럼 그림을 보면서 이해를 해보자.


이제 이해가 가리라 밑는다.

그럼 이제 또다른 의문이 생길 것이다.
왜 이렇게 쓰는가!!

이렇게 쓰는 이유는 CPU를 제작하던 회사에서 CPU가 데이터를 읽는 방식을 위와 같이 빅 엔디언과 리틀 엔디언으로 나눠서 사용했기 때문이다.
그중 모토로라가 주도해서 빅 엔디언을 사용하였었고, 인텔이 주도해서 리틀 엔디언을 사용했다.
지금이야 어떤 기술의 표준이 정해지면 그 표준에 맞춰서 물건을 제작하는 것이 보편화 되었지만 컴퓨터가 막 제작되기 시작한 당시에는
표준에 대한 관념이 희박했기 때문에 이와 같은 사태가 발생한 것이다.

그럼 왜 두 방식의 차이점이란 무엇인가가 의문을 가질 수 있을 것이다.
간단하게 말해서 빅 엔디언은 대수 비교가 빠르다. 즉 논리 연산이 빠르다는 의미이다. 
           그리고 리틀 엔디언은 산술 연산이 빠르다. 즉 수식 계산이 빠르다는 것이다.
그래서 슈퍼 컴퓨터의 경우에는 산술 연산 보다 대수 비교가 많으므로 빅 엔디언 방식의 메모리 저장방식을 사용하고
일반 개인용 퍼스널 컴퓨터(Persnal Computer;PC)의 경우에는 리틀 엔디언이 많이 사용된다.

물론 데이터가 메모리에 저장되는 과정까지 신경써야하는 일이 발생하지 않으면 전혀 쓸모 없다고 생각될 내용일지 모르겠지만
교양으로 알아두자.

  1. ghd 2013.07.26 23:52

    지금은 반짝반짝 빛이 나겠지,, 하지만 시간이 흐르면 그빛은 사라저버릴거야,지금 우리처럼

+ Recent posts