명령어 (3) - 바이트 주소, 엔디안

컴퓨터구조

2020. 4. 8. 10:33

1. Byte Address

  • 대부분의 컴퓨터는 메모리를 Byte단위로 Access하는데, Word 단위로 Alignment된다. 
  • 결국, 메모리 엑세스의 최소 단위가 Word라는 것이다.
  • 버스의 크기가 Word단위로 맞춰져있기 때문에 어쩔수 없다. 만약 32Bit Word라면 데이터버스선이 32개이다.
  • 때문에 데이터를 주고 받을 때 한번에 32개씩만 주고받을 수 있고 20개씩 주고받거나 이렇게 못한다.

 

2. Byte Order (Endian)

  • Big Endian: Leftmost byte is word address (큰 비트가 끝으로 감)
  • Big Endian Processors: IBM360/370, Motorola 68k, MIPS, Sparc, HP
  • Little Endian: Rightmost byte is word address (작은 비트가 끝으로 감)
  • Little Endian Processors: Intel8086, DEC Vax, Dec Alpha (Windows NT)

 

[그림] Byte Order 설명 이미지1
[그림] Byte Order 설명 이미지2

  • 즉, 레지스터에서 연산한 정보를 메모리에 다시 저장하거나, 메모리에서 레지스터로 메모리를 로드할때
  • 어떤 순서로 데이터를 저장하고, 로드할 것인지에 대한 방식이 바로 Byte Order (Endian) 방식임
  • Big Endian은 말 그대로 가장 큰 비트(Big)이 끝(Endian)으로 간다는 것임.
  • 위 그림을 보면 0x12345678가 있을 때, 가장 마지막 비트인 0x78이 가장 마지막에 저장됨
  • 그러나 Little Endian은 0x12345678가 있을 때, 가장 앞 비트인 0x12가 가장 마지막에 저장됨
  • 대부분 CPU는 하나의 Endian만 가능하지만, 최근 나온 ARM은 설정으로 통해 둘 중 하나를 고를 수 있음.

 

[그림] Byte Order 설명 이미지3

  • 0x12345678을 거꾸로 뒤집에서 0x87654321과 같이 저장하는 것이 아니라 Word 단위로 거꾸로 저장됨
  • 만약 0x12345678이 32Bit Word 프로세서에서 리틀엔디안으로 저장되면 78 56 34 12로 저장됨. 
  • Big Endian은 디버그를 편하게 해주는 장점이 있다. 사람이 숫자를 읽고 쓰는 방법과 같기 때문에 보기 편하다
  • Little Endian은 메모리에 저장된 값의 하위 비트만 사용할 때 별도의 계산이 필요없다는 장점이 있다. 
  • 이게 무슨말이냐면, 32비트인 0x2A를 Little Endian으로 표기하면 2A 00 00 00이 된다.
  • 이 경우에 앞의 한, 두바이트만 가서 엑세스하여 로딩하면 바로 하위 8Bit, 16Bit를 얻을 수 있지만
  • 이 것을 Big Endian으로 표기하면 00 00 00 2A가 되기 때문에, 변수 주소를 더 뒤로 움직여야 엑세스 가능하다.

 

3. Reference

 

컴퓨터구조

이 과목에서는 컴퓨터 시스템의 구성, 동작원리와 설계를 다룬다. 특히 컴퓨터 성능, 명령집합, 제어와 마이크로프로그래밍, 파이프라인, 정수와 부동 소수점수 연산, 기억부 시스템, 입출력 부시스템, 고급 컴퓨터구조 등과 같은 내용에 중점을 둔다. 교과목을 통해 고속 Data Network 시스템에 들어가는 여러 Processors를 이해하고, 이들을 설계 또는 Programming 할 수 있는 능력을 배양한다.

www.kocw.net

 

리틀 엔디안 VS 빅 엔디안

먼저 둘을 비교하기에 앞서 엔디언이란 무엇인가? 엔디언(Endianness)은 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻하며, 바이트를 배열하는 방법을 특히 바이트 순서(By..

genesis8.tistory.com