이번 포스팅에서는 디지털 컴퓨터가 어떤 방식으로 계산을 하고 프로그래밍을 하면 컴퓨터에서 어떤 식으로 동작하는지에 대해 포스팅하겠다.
우선 디지털 컴퓨터에대해 설명하기전 몇 가지 레지스터의 회로중 하나를 설명해야 할 것 같다.
program Counter이란 cpu의 레지스터중 하나로 한번의 클럭이 발생할때 마다 숫자가 1씩 증가한다. 이는 앞으로 나올 메모리에서의 합산에서 중요한 역할을 한다.
컴퓨터는 숫자를 더할때 우선 더하기를 할 숫자를 우선 메모리에 저장하는데 이때
Control panel이라는 제어 장치를 사용하게 된다. control panel에는 takeover이라는곳에서 숫자가 1이면 입력한 데이터를 메모리에 순차적으로 입력을 하게되고 0이 되면 control panel은 메모리에 간섭을 하지 않는다. 이때 program Counter(pc)의 clear이 0이라면 앞서 저장한 메모리의 앞부분 부터 순차적으로 읽는데 이때 클럭에 따라 1씩 증가하는 특성이 이용된다. 이 특성으로 만약 저장된 데이터의 메모리 주소가 0000h라고 한다면 처음에는 0000h를 불러오고 다음에 0001h를 불러온다 그렇게 값을 차례대로 불러와 8-bit adder에서 값을 계산한다
위 과정에서 알 수 있는 중요한 점은 더이상 회로를 바꿀 필요가 없고 메모리에만 데이터를 저장한다면 알아서 계산을 해준다는 점이다.
이번에는 메모리에 컴퓨터가 해야할 일에 대해 지정하게 해둔 opper Code에 대해 알아보자 opper code는 명령을 의미하는 숫자를 만들어 메모리에 저장하는 방법이다. 저장하는 방법에는 여러가지가 있지만 메모리 공간을 분리하여 data와 opper code가 따라 들어있다고 가정할때 처리하는 방법에 대해 알아보겠다.
만약 두 자리 더하기를 한다면 opper code를 읽고 다른 메모리로 이동하여 그 지점에 저장된 숫자와 다음 메모리 주소의 숫자를 더하여 다시 메모리에 저장할 것이다.
opper Code를 사용하면 다음과 같은 이점이 있다고 한다.( 필자도 잘 모름 )
1.명령어 해석: opcode는 명령어의 종류를 식별하고, 어떤 작업을 수행해야 하는지를 결정하는 역할을 합니다. 이를 통해 컴퓨터가 명령어를 이해하고 실행할 수 있다.
2.명령어 실행: opcode는 컴퓨터가 명령어를 실행하는 데 필요한 하드웨어 회로를 제어하는 데 사용됩니다. 이를 통해 컴퓨터가 명령어를 정확하게 실행할 수 있다.
3.프로그램 제어: opcode는 프로그램의 제어 흐름을 제어하는 데 사용됩니다. 이를 통해 분기(branch) 명령어를 사용하여 프로그램의 실행 위치를 변경할 수 있다.
4.메모리 관리: opcode는 메모리의 어떤 위치에서 어떤 데이터를 읽어와야 하는지, 어떤 위치에 어떤 데이터를 써야 하는지를 결정한다. 이를 통해 메모리를 효율적으로 관리할 수 있다.
5.하드웨어 회로 단순화: opcode를 사용하면 하드웨어 회로를 단순화할 수 있다. 이를 통해 하드웨어를 더 적은 비용으로 제작할 수 있다.
6.이식성: opcode를 사용하면 하드웨어와 소프트웨어 간의 인터페이스를 표준화할 수 있다. 이를 통해 소프트웨어가 다양한 하드웨어에서 작동할 수 있도록 이식성을 보장할 수 있다.
우선 프로그래밍을 하여 우리가 인터프린터 / 컴파일러 작업을 거처 위에서 보았던 opper Code로 변환하여 cpu가 읽고 동작할 수 있는 형태로 바꾸기 때문에 우리는 저급 레벨 언어(어셈블리어 등)을 몰라도 편하게 코딩을 할 수 있는 것이다.