메모리 주소

컴퓨터 과학에서 메모리 주소(memory address)는 메모리 위치에 대한 식별자로, 컴퓨터 프로그램이나 하드웨어 장치가 데이터를 저장하고 나중에 이를 가져오는 장소이다. 일반적으로 이는 이진 형태의 숫자로 되어 있다.

컴퓨터 프로그램에서 절대 주소는 메모리 위치를 식별하는 메모리 고유 주소이다. 즉, 기억장치 고유의 번지로서, 기억장치 중 기억장소를 직접 숫자로 지정하는 주소역할을 한다. 기계어 정보가 기억되어 있으며, 1,2,3,4…와 같이 16진수로 약속하여 순서대로 결정한다. 반면 상대 주소는 고유 주소가 아니며, 특정 영역에 상대적인 주소를 지정한다.

마이크로프로세서의 주소 공간 
마이크로프로세서의 입장에서 메모리를 액세스할 때, 무한정의 주소값을 취급할 수 없다. 따라서 정해진 비트 수를 정해야 한다. 마이크로프로세서가 4비트로 시작하여 진화하면서 주소 공간도 확대되었다. 각각의 마이크로프로세서는 고유의 주소 공간을 갖는다. 이것이 주소 버스로 표현된다. 어느 경우는 복합적인 메모리 구조를 갖기도 한다. 일반적으로 8비트와 32비트 일반적 마이크로프로세서에서 주소표시 공간이 고정된다.

초기의 8비트 마이크로프로세서에서는 주로 16비트의 주소 공간을 갖는다. 인텔의 8080 계열에서 그리고 모토롤라의 68계열에서 16비트로 주소를 구별한다. 8080, 8085, Z-80, 6800, 6809, 6502 등의 8비트 마이크로프로세서는 16비트의 주소 공간을 갖는다.

8비트가 MCU로 진화 하면서 주소 공간이 다양해졌다. 8051의 경우 8비트 주소 공간과 16비트 공간을 분리해서 사용한다. 즉, 하나의 마이크로프로세서에서 2가지 주소 공간을 사용한다. 이렇게 2가지를 사용하려면 기계어가 2가지로 주소 공간을 취급할 수 있도록 분리해야 한다. MCU는 다양한 주소체계를 사용하므로 일반화 하기가 힘들고, 개발자가 확인해야 한다.

32비트로 진화하면 32비트의 주소 공간을 일반화된다. 거의 모든 32비트 CPU는 32비트 주소 공간을 갖는다. 인텔 x86(IA-32), 68020, ARM 등의 CPU가 32비트의 주소 공간을 갖는다.

많은 32비트에서 메모리의 관리를 위해 메모리 관리 장치(MMU)가 추가되어 운영 체제와 유기적 액세스가 이루어진다. 논리주소를 물리주소로의 변환은 메모리 자원을 관리하는 역할을 제공한다.

메모리에서의 뱅크 
많은 8비트의 마이크로프로세서가 16비트의 주소 공간을 사용하면서, 메모리를 설계하여 최대로 사용할 수 있는 공간이 16비트 이므로 64K 바이트의 공간을 가질 수 있다. 그러나 초기의 8비트가 진화하면서 시스템이 복잡해지면서 메모리가 많이 필요하게 되었다. 64K 이상을 사용하려면 뱅크라는 개념을 도입하여 프로그램에 의해 뱅크 선택을 하고 액세스하는 방식으로 진화하였다.

같이 보기 
 주소 공간
 가상 메모리

컴퓨터 메모리
식별자