일반적으로 명령어 형식의 동작 코드에 따라 명령어의 종류에는 데이터 전송 명령어 데이터 처리 명령어 및 프로그램 제어 명령어가 있다. 데이터 전송 명령어는 내용의 변경 없이 한 장소에서 다른 장소로 데이터를 옮기기만 하는 명령으로 기억 기능 및 입출력 기능을 가지고 있습니다. 데이터나 정보를 레지스터와 메모리 사이에서 또는 메모리에서 레지스터로 옮기는 것을 로드, CPU에서 메모리로 옮기는 것은 스토리라 하고 레지스터 간의 이동에는 무브 두 레지스터 사이에서는 익스체인지, 레지스터와 입출력 장치 사이에는 인풋과 아웃풋, 레지스터와 스택 사이에서 스택에 저장하는 경우는 푸시이며 스택에서 인출하는 경우는 팝으로 나타냅니다. 데이터 처리 명령어는 모든 컴퓨터의 동작의 주체로 연산 기능을 가지며 4칙 연산 및 증감, 2의 보수 등을 행하는 산술 명령과 피연산자의 각 비트를 하나씩 논리 처리하는 논리 연산 및 비트 처리 명령과 어떤 워드의 비트들을 모두 이동시키는 시프트 명령이 있습니다. 프로그램 제어 명령어는 프로그램 카운터의 값을 변경할 수 있는 제어 기능을 가지며 조건 및 무조건 분기의 분기 명령, 바로 다음 명령으로 건너뛰는 스킵 명령, 서브루틴 호출과 복귀를 위한 서브루틴 명령, 비교 명령과 테스트 명령이 있습니다. 메모리 참조 명령어 동작 코드가 해당하는 주소의 메모리 내용으로 실행하는 명령어이며, 레지스터 참조 명령어는 주소 부분에 레지스터의 동작이나 테스트를 기술하여 하나 이상의 레지스터 내용으로 작동되는 명령어입니다. 입출력 참조 명령어는 주소 부분에 입출력 동작이나 테스트를 기술한 명령어입니다.
명령어 주소 지정 방식
명령어 형식에 있어서 어떤 필드든지 그 길이는 제한적이며 비교적 대용량의 주기억 장치 또는 가상 기억 장치의 특정 장소를 접근하기 위해서는 다양한 명령어 주소 지정 방식을 사용합니다. 명령어에 언제나 피연산자가 저장된 메모리 주소를 직접 포함하는 것은 프로그램의 유연성을 줄이고 그 결과 명령어의 크기가 커지게 됩니다. 따라서 포인터, 인덱싱 등의 여러 기법으로 피연산자에 접근할 수 있는 방법을 프로그래밍 할 때 제공하고, 작업 수행에 필요한 명령어 개수와 명령어의 길이를 줄이고, 다양한 형태로 프로그램이 가능하도록 하기 위해 명령어 내에 피연산자가 저장된 주소를 다양한 방법으로 표시할 수 있도록 명령어 주소 지정 방식을 사용합니다.
명령어 주소 지정 방식은 피연산자가 저장된 장소의 주소를 지정하는 방법에 의해 여러 경우로 나누어집니다. 명령어 주소 지정 방식은 연산에 사용될 데이터를 주기억 장치의 어떤 위치에서 가져올 것인가를 명령어 형식의 오퍼랜드 주소부에 미리 지정하는 방식을 말합니다. 명령어의 OP 코드는 처리해야 할 연산을 표시하고 이 연산은 레지스터나 메모리 워드에 저장된 데이터에 대해 수행을 하고 명령어 주소 지정 방식에 따라 달라지게 됩니다.
컴퓨터에 명령어 주소 지정 방식을 사용하는 이유는 첫째, 포인터, 카운터 인덱싱, 프로그램 재배치 등의 편리함을 사용자에게 제공함으로 프로그래밍을 하는데 도움을 주고 둘째, 명령어의 주소 부분의 비트를 줄일 수 있습니다. 사용 경험이 적고 초보자에게는 컴퓨터에서의 다양한 주소 지정 방식이 매우 복잡하게 보일 수 있지만 반면에 다양한 주소 지정 기법을 사용함으로써 숙련된 프로그래머는 명령어의 개수나 수행 시간을 절약하여 훨씬 효율적인 프로그램을 작성할 수도 있습니다.
1) 즉시 주소 지정 방식
즉시 주소 지정 방식은 주소 지정 방식 중에서 가장 간당한 형태의 하나로 오퍼랜드는 실질적으로 명령어 내에 포함하고 있습니다. 즉 오퍼랜드는 A입니다. 그러므로 상수로 취급하며 변수의 초기 값을 설정하는 경우에 이용할 수 있습니다. 상수는 2의 보수로 표현되고 부호 비트는 최좌측 비트가 되며 오퍼랜드를 위해 추가로 기억 장치를 접근할 필요가 없으므로 기억 사이클 하나를 줄일 수 있다는 장점이 있습니다. 제한 사항은 주소 필드 내에 피연산자를 두기 때문에 워드 길이에 비해 그 크기가 작아서 데이터를 표현할 길이가 짧다는 것입니다.
2) 직접 주소 지정 방식
직접 주소 지정 방식은 피연산자 내의 주소가 실제 데이터의 주소로 직접 매핑이 이루어집니다. 기억 장치 상의 주소와 프로그램상의 주소가 일치해야 하기 때문에 간결한 장점은 있으나 융통성이 부족한 단점이 있습니다. 이 방식은 매우 간단한 형태의 주소 지정으로써 주소 필드는 오퍼랜드의 유효 주소를 갖습니다. 즉 메모리 참조를 1번 합니다.
직접 주소는 이미 절대적인 형태로 나타나 있기 때문에 처리기가 이러한 종류의 주소를 취하는데 어떤 작업도 수행하지 않습니다. 가장 보편적인 주소 지정 방법이지만 주소를 표현하는데 보다 많은 비트를 필요로 하기 때문에 메모리와 처리기 사이의 연결에 비용이 많이 듭니다. 또한 피연산자를 얻기 위해 필요한 정보는 전적으로 명령어 내에 위치하고 있습니다. 이외 다른 주소 지정 방법들에서는 피연산자를 얻기 위한 정보의 일부가 명령어 내에 있고 또한 일부분은 처리기 내에 존재합니다.
3) 간접 주소 지정 방식
앞에서 설명한 직접 주소 지정 방식은 일반적으로 주소 필드의 길이가 워드 길이보다 작기 때문에 주소 지정 공간이 제한된다는 문제점이 있었습니다. 이러한 문제점을 해결하는 한가지 방법으로는 주소 필드가 기억 장치의 한 워드를 가리키도록 하고 그 내용이 피연산자의 주소가 되도록 하면 워드 크기만큼의 주소 필드를 갖는 효과가 있습니다. 이러한 주소 지정 방식을 간접 주소 지정 방식이라고 하며 두 번에 걸쳐 메모리를 참조하는 특징이 있습니다. 이 방식의 장점은 워드 길이 mm에 대해 주소 지정이 가능한 공간은 2mm가 된다는 점입니다. 이에 따라 메모리를 임의로 사용한다거나 프로그램상의 융통성을 발휘할 수 있습니다. 단점으로는 명령어를 수행하기 위해서 피연산자를 인출하는데 두 번 기억 장치를 참조하여야 되는 레벨 2가 필요합니다. 즉 한 번은 오퍼랜드의 주소를 얻기 위해서 또 한 번은 오퍼랜드를 얻기 위해서 필요합니다. 프로세서에서는 레지스터 간접 주소 방식이 일반적으로 사용되고 있습니다.
'컴퓨터정보' 카테고리의 다른 글
레지스터란 무엇인가? (0) | 2022.01.06 |
---|---|
CPU 명령어 종류를 알아보자 2장 (0) | 2022.01.06 |
CPU 관련 정보를 알아보자 2장 (0) | 2022.01.05 |
CPU 관련 정보를 알아보자 1장 (0) | 2022.01.05 |
데이터 표현 개요 2장 (0) | 2022.01.04 |