Byte Addressable Memory vs. Word Addressable Memory

Byte Addressable Memory와 Word Addressable Memory는 컴퓨터 메모리의 주소 지정 방식을 설명하는 개념이다.
이 두 가지 방식은 메모리의 구조와 데이터 접근 방법에 중요한 차이를 나타낸다.

Byte Addressable Memory vs. Word Addressable Memory
Sourece: https://examradar.com/memory-organisation/

Byte Addressable Memory

Byte Addressable Memory는 각 바이트(8비트)마다 고유한 주소가 할당되어 개별적으로 접근할 수 있는 메모리 구조이다.

가장 작은 주소 지정 단위(smallest addressable unit)는 1바이트(8비트)이며, 이를 통해 메모리의 각 바이트에 직접 접근할 수 있다.
CPU는 개별 바이트 단위로 메모리에 접근할 수 있으며, 워드(일반적으로 4바이트 또는 8바이트) 단위의 접근도 가능하다.
32비트 시스템에서는 2^32개의 주소를 가질 수 있어 최대 4GB의 메모리를 지원하며, 64비트 시스템에서는 훨씬 더 큰 주소 공간을 제공한다.

세밀한 메모리 조작이 가능하며 다양한 데이터 타입을 효율적으로 저장할 수 있으며, 문자열 처리 등 바이트 단위 연산에 유리하다.

엔디안(Endianness)

  • 메모리에 다중 바이트 데이터를 저장하는 순서를 나타낸다.
  • 주요 엔디안(Endianness)는 다음과 같다.
    • 빅 엔디안(Big Endian):
      • 가장 중요한 바이트(Most Significant Byte, MSB)가 가장 낮은 메모리 주소에 저장된다.
      • 사람이 숫자를 읽는 방식과 유사하여 직관적이다.
      • 주로 네트워크 프로토콜에서 사용되며, “네트워크 바이트 순서"라고도 한다.
    • 리틀 엔디안(Little Endian):
      • 가장 덜 중요한 바이트(Least Significant Byte, LSB)가 가장 낮은 메모리 주소에 저장된다.
      • Intel x86, x64 프로세서 등 많은 현대 컴퓨터 시스템에서 사용된다.
      • 일부 수학적 연산에서 효율적일 수 있다.
  • 예를 들어, 32비트 정수 0x11223344를 메모리에 저장할 때:
    • 빅 엔디안: 11 22 33 44
    • 리틀 엔디안: 44 33 22 11
  • 엔디안은 다중 바이트 데이터 처리에만 영향을 미치며, 단일 바이트 데이터(예: ASCII 문자)는 영향을 받지 않는다.

Word Addressable Memory

Word Addressable Memory는 메모리의 각 워드(word)마다 고유한 주소가 할당되는 메모리 구조로, 여기서 워드는 프로세서가 한 번에 처리할 수 있는 데이터의 기본 단위를 의미한다. 일반적으로 워드 크기는 32비트(4바이트) 또는 64비트(8바이트)이다.
워드 단위로만 메모리에 접근할 수 있으며, 개별 바이트에 직접 접근할 수 없다.
바이트 주소 지정 방식에 비해 더 적은 주소로 더 큰 메모리 공간을 관리할 수 있으며, 워드 크기의 데이터 처리에 효율적이다. 또한, 작은 크기의 데이터 처리에는 비효율적일 수 있다.

워드 크기에 따라 주소 지정 가능한 메모리 용량이 달라진다.
예를 들어:

  • 16비트 주소와 32비트 워드 시스템: 2^16 * 4바이트 = 256KB
  • 32비트 주소와 64비트 워드 시스템: 2^32 * 8바이트 = 32GB

큰 데이터 처리에 효율적이며, 주소 공간을 효율적으로 사용할 수 있다.
하지만, 작은 데이터 처리에 비효율적이며, 바이트 단위 조작이 어렵다.

비교 분석 표

특성Byte Addressable MemoryWord Addressable Memory
주소 단위1 바이트1 워드 (보통 4바이트 또는 8바이트)
메모리 접근바이트 단위로 가능워드 단위로만 가능
주소 공간더 많은 주소 필요더 적은 주소 필요
유연성높음 (바이트 단위 조작 가능)제한적 (워드 단위로만 조작)
메모리 효율세밀한 메모리 관리 가능워드 크기 미만의 데이터도 워드 전체 사용
구현 복잡도상대적으로 복잡상대적으로 단순
주요 용도범용 컴퓨팅 시스템특수 목적 프로세서, 일부 임베디드 시스템
데이터 정렬바이트 단위 정렬 가능워드 경계에 정렬 필요

세부 특성 비교

메모리 접근 패턴

1
2
3
4
5
6
7
8
# Byte Addressable
def access_byte(address):
    return memory[address]  # 직접 바이트 접근

# Word Addressable
def access_word(address):
    word_address = address // WORD_SIZE
    return memory[word_address]  # 워드 단위 접근

메모리 사용 효율

1
2
3
4
5
# Byte Addressable
char small_data = 'A';    # 1바이트만 사용

# Word Addressable
word small_data = 'A';    # 전체 워드(4바이트) 사용

주소 계산

1
2
3
4
5
# Byte Addressable
byte_address = base_address + offset

# Word Addressable
word_address = (base_address + offset) // WORD_SIZE

시스템 수준 영향

영향 분야Byte AddressableWord Addressable
메모리 관리더 복잡하지만 유연함단순하지만 제한적
캐시 구성바이트 단위 접근 지원 필요워드 단위로 단순화
버스 대역폭바이트 단위 전송 지원워드 단위 전송에 최적화
명령어 세트바이트 조작 명령어 포함워드 단위 명령어 중심
성능 특성세밀한 조작 가능하나 오버헤드 있음단순하고 효율적이나 제한적

이러한 차이점들을 이해하는 것은 시스템 설계와 최적화에 중요하다. 특히 저수준 프로그래밍이나 시스템 프로그래밍을 할 때 이러한 특성들을 고려해야 한다.


참고 및 출처