다음 글은 '컴퓨터 구조 및 설계' 2장: 명령어:컴퓨터 언어 를 참고했습니다.
컴퓨터 하드웨어에게 일을 시키려면 하드웨어가 알아들을 수 있는 언어로 말을 해야 하는데,
컴퓨터 언어에서 단어를 명령어(instruction)이라 하고,
그 어휘를 명령어 집합(instruction set)이라고 합니다.
사용할 명령어 집합은 MIPS 어셈블리 언어에서 선택했습니다.
이 장에서는 명령어의 표현 방식을 배웁니다. 표현 방식을 배우면 컴퓨터의 가장 큰 비밀인
내장 프로그램 개념(stored-program concept)을 이해할 수 있습니다.
모든 명령어는 피연산자를 반드시 세 개씩 갖도록 제한하는 것은
하드웨어를 단순하게 하자는 원칙과 부합합니다.
산술 명령어의 피연산자는 레지스터(register)라고 하는
하드웨어로 직접 구현된 특수 위치 몇 곳에 있는 것만 사용할 수 있습니다.
레지스터는 하드웨어 설계의 기본 요소인 동시에 컴퓨터를 구성하는 벽돌과 같다고 할 수 있습니다.
MIPS에서는 32비트가 한 덩어리로 처리되는 일이 매우 빈번하므로 이것을 워드(Word)라고 부릅니다.
현대 컴퓨터에는 MIPS에서처럼 보통 32개의 레지스터가 있습니다.
레지스터가 개수를 32개로 제한하는 이유는 하드웨어 기술의 바탕이 되는 두 번째 원칙에 기반합니다.
'작은 것이 더 빠르다'
레지스터가 아주 많아지면 전기 신호가 더 멀리까지 전달되어야 하므로 클럭 사이클 시간이 길어집니다.
프로세서는 소량의 데이터만을 레지스터에 저장할 수 있지만, 컴퓨터 메모리는 수십억 개의 데이터를 저장할 수 있습니다.
MIPS의 산술연산은 레지스터에서만 실행되므로 메모리와 레지스터 간에 데이터를 주고받는 명령어가 있어야 합니다. 이런 명령어를 데이터 전송 명령어(data transfer instruction)이라고 합니다.
메모리에 기억된 데이터 워드에 접근하려면 명령어가 메모리 주소(address)를 지정해야 합니다.
메모리에서 레지스터로 데이터를 복사해 오는 데이터 전송 명령을 적재(load)라 합니다.
적재 명령은 연산자 이름과 메모리에서 읽어 온 값을 저장할 레지스터, 메모리 접근에 사용할 상수와 레지스터로 구성됩니다.
Q. 내장 프로그램 개념(stored-program concept)이란 무엇인가?
A. 내장 프로그램 방식이란 CPU와 메모리, 프로그램 구조를 갖는 방식입니다.
즉, CPU 옆에 메모리를 따로 위치시킴으로써 프로그램과 자료를 저장해놓았다가,
실행 명령에 따라 작업을 차례로 불러내 처리하는 방식입니다.
내장 프로그램 개념은
1. 명령어는 숫자로 표현된다.
2. 프로그램은 메모리에 기억되어 있어서 숫자처럼 읽고 쓸 수 있다. 는 것에 기반합니다.
Q.클럭 사이클 시간이란 무엇입니까?
A. 컴퓨터 설계자는 하드웨어가 기본 함수를 얼마나 빨리 처리할 수 있는지와 관련된 성능 척도를
필요로 합니다.
거의 모든 컴퓨터는 하드웨어 이벤트가 발생하는 시점을 결정하는 클럭을 이용하여 만들어집니다.
이 클럭의 시간 간격을 클럭 사이클(clock cycle)이라고 합니다.
한 클럭 사이클에 걸리는 시간을 클럭 주기(clock period)라고 하며,
클럭 속도는 클럭 주기의 역수입니다.
Q. 프로세서는 소량의 데이터만을 레지스터에 저장할 수 있지만, 컴퓨터 메모리는 수십억 개의 데이터를 저장할 수 있다는 것이 어떤 의미인가?
A. 레지스터는 32개로 개수가 한정되어 있습니다. 따라서 레지스터에 저장할 수 있는 데이터는 한정되어 있습니다. 하지만 메모리는 레지스터에 비하면 훨씬 더 큰 용량을 갖고 있기 때문에, 수십억 개의 데이터를 저장할 수 있습니다.
Q. 왜 레지스터의 개수는 32개로 한정되어 있습니까?
A. 레지스터의 개수를 한정한 것은 클럭 사이클 시간을 한정하기 위해서입니다.
즉, 레지스터의 개수가 늘어나면 클럭 사이클 시간이 늘어날 수 있습니다.
Q. 왜 레지스터가 아주 많아지면 전기 신호가 더 멀리까지 전달되어야 하므로 클럭 사이클 시간이 늘어납니까?
A. 우선 전기 신호가 더 멀리까지 전달되어야 한다는 것을 이해해야 합니다.
Q. 클럭 사이클 시간이란 무엇입니까?
A. 클럭(Clock)은 순차회로에 가해지는 전기적 진동의 속도를 나타내는 단위이며, Hz로 표기됩니다.
클럭 사이클 시간이란 하나의 클럭 사이클이 수행되는데 걸리는 시간을 의미합니다.
Q. 클럭 사이클 시간이 늘어난다는 것이 어떤 의미입니까?
A. 클럭 사이클 시간이 늘어난다는 것은,
하드웨어가 기본 함수를 처리하는데 걸리는 시간이 늘어난다는 의미입니다.
즉, 하드웨어의 작업 수행 시간이 늘어난다는 것이고,
이는 하드웨어의 성능이 낮아짐을 의미합니다.
Q. 왜 메모리와 레지스터 간에 데이터를 주고 받아야 합니까?
A. MIPS의 산술 연산은 레지스터에서만 실행되기 때문입니다.
이 때, 메모리에서 레지스터로 데이터를 복사해 오는 명령을 적재(load)라고 하고,
반대로 레지스터에서 메모리로 복사하는 명령을 저장(store)라고 합니다.
Q. 메모리 주소(address)란 무엇입니까?
A. 메모리는 주소 체계를 활용해서 데이터를 저장합니다.
즉, 메모리 주소는 메모리 위치에 대한 식별자입니다.
이를 통해 컴퓨터 프로그램이나 하드웨어가 데이터를 저장하고
나중에 이를 가져오는 작업을 수행할 수 있습니다.
Q. 적재(load) 명령이 필요한 이유가 무엇입니까?
A. 적재(load)명령은 메모리에 있는 데이터를 레지스터(register)로 옮겨오는 명령입니다.
이 명령이 필요한 이유는 MIPS 명령어 수행은 오직 레지스터(register)에서만 가능하기 때문입니다.
Q. MIPS 명령어 수행이 오직 레지스터(register)에서만 가능하다는 것이 어떤 의미입니까?
A. MIPS 명령어란 컴퓨터 하드웨어가 이해할 수 있는 명령어를 의미합니다.
즉, 컴퓨터 하드웨어에게 특정 작업을 수행하도록 지시하려면
MIPS 명령어를 통해서 컴퓨터 하드웨어에게 지시를 해야 합니다.
레지스터는 CPU 안에 존재하고, 메모리는 CPU 외부에 존재합니다.
이 때, 레지스터는 처리 속도가 빠르지만 용량이 작고,
반대로 메모리는 처리 속도는 느리지만 용량이 큽니다.
따라서 MIPS 명령어 수행은 레지스터에서만 실행 가능하도록 하고,
실행할 데이터는 메모리로부터 적재(load)하고, 처리 후 저장(store)하는 방식을 취합니다.
Q. 왜 메모리 계층 구조(memory hierachy strucuture)가 존재합니까?
A.
Q. 왜 워드는 32비트입니까? 1워드가 MIPS 구조에서 레지스터 크기에 해당한다는 것이 어떤 의미입니까?
A.