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 (Endian) 방식임
- Big Endian은 말 그대로 가장 큰 비트(Big)이 끝(Endian)으로 간다는 것임.
- 위 그림을 보면 0x12345678가 있을 때, 가장 마지막 비트인 0x78이 가장 마지막에 저장됨
- 그러나 Little Endian은 0x12345678가 있을 때, 가장 앞 비트인 0x12가 가장 마지막에 저장됨
- 대부분 CPU는 하나의 Endian만 가능하지만, 최근 나온 ARM은 설정으로 통해 둘 중 하나를 고를 수 있음.
- 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
'컴퓨터구조' 카테고리의 다른 글
명령어 (6) - Immediate 오퍼랜드, 상수 Zero (0) | 2020.04.08 |
---|---|
명령어 (5) - MIPS 레지스터 (0) | 2020.04.08 |
명령어 (4) - 메모리 오퍼랜드 (1) | 2020.04.08 |
명령어 (2) - 산술연산, 레지스터 개요 (0) | 2020.04.08 |
명령어 (1) - 개요 (0) | 2020.04.08 |
성능 (4) - 성능 평가의 메트릭 (0) | 2020.02.15 |
성능 (3) - 성능에 관련된 여러가지 법칙 (0) | 2020.02.15 |