티스토리 뷰

byte alignment 에 관한 내용

왜 바이트 정렬을 제한하는가?
(Why Restrict Byte Alignment?) 32bit 마이크로프로세서는 전형적으로 아래의 그림과 같이 구성되어 있습니다. 메모리는 32bit bus cycles을 수행함으로 접근됩니다. bus cycle이란 주메모리(ram)와 cpu간의 한번의 트랜잭션을 뜻합니다. 그러나 32bit bus cycles는 4로 나누어 떨어지는 주소상에서만 수행됩니다. 정렬되지 않은 long word 에 대해 읽고 쓰는것을 허용하지 않는 것은 이해하기 쉽습니다.

 예를 들어 정렬된 long word 인 X는 X0, X1, X2, X3 에서 처럼 쓰여질 수 있습니다. 이런상황에서 마이크로프로세서는 단 한번의 bus cycle로 X를 읽을 수 있습니다. 만약 동일한 마이크로프로세서가 0×000D에 위치한 long word 를 읽으려고 한다면, Y0, Y1, Y2 와 Y3를 읽여야 하는데 이때는 단일 32bit bus cycle로는 읽을 수가 없습니다. 마이크로프로세서는 완전한 long word를 읽기 위해 서로 다른 주소인 0×100C와 0×1010에서 읽어와야 합니다. 이렇게 정렬되지 않은 주소의 4byte 데이터타입은 2번의 읽기를 수행해야 합니다.


byte alignment 를 사용하는 방법
http://kldp.org/node/38252
gcc compiler option : -fpack-struct

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함