be_better

[컴퓨터 구조] CPU의 프로그래밍 본문

컴퓨터 공학 지식/컴퓨터 구조

[컴퓨터 구조] CPU의 프로그래밍

NiceTry 2023. 9. 6. 20:49

목차

    Software

    소프트웨어(Software)는 크게 Code와 Data의 조합으로 구성되어 있다.

    Software Engineer:  Code를 작성하는 사람

    Machine language: CPU에서 Intruction code 또는 Operation code를 만들어놓고 제공

    Compile: 개발자가 사용하는 프로그래밍 언어로 작성된 프로그램이 컴파일러를 통해 CPU가 제공하는 Op Code로 변환

     

    Compiler: 고급 언어로 작성된 코드를 처음부터 끝까지 한번에 기계어로 변환하는 프로그램
    대표적인 언어로는 C언어, JAVA 언어가 있다.

    천줄, 만줄의 코드를 특정 프로그램으로 한번 쭉 기계어로 변환된 파일을 만들어서 그 파일을 실행하는 것
    한번 쭉 먼저 변환하여 실행하기 때문에 실행이 빠르다.


    Interpreter: 고급 언어로 작성된 코드를 한줄씩 기계어로 변환하는 프로그램
    대표적인 언어로는 Python, PHP, Ruby 가 있다.

    실행을 할 때 마다 한줄씩 기계어로 변환해서 실행해야 하기 때문에 Compiler보다 느리다.

     

    CPU의 프로그램 동작 과정

    우리가 코드를 짜고 컴파일을 하게 되면 CPU에서는 Instruction Set을 정의하고 어떤 코드를 갖는지 알려주고

    어셈블리어오 Op code에 대응할 수 있는 약자들을 만든다.

     

    컴파일을 통해 기계어로 변환한 명령어들을 Memory에 저장해두고

    폰노이만 구조에 따라 CPU의 Controller Unit, ALU의 가산기 논리연산 레지스터, IO Device, Memory가

    System Bus를 이용해 데이터, 명령어들을 주고 받는다.

     

    레지스터 종류

    PC (Program Counter)

    CPU안의 레지스터 중 하나로서 다음 실행할 명령어의 주소를 가지고 있어서 실행할 기계어 코드의 위치를 지정한다.

    명령주기(Clock)에 따라 자동으로 하나씩 증가한다.

     

    순차적으로 증가하다가 PC가 가리키는 주소에 다른 주소로 이동하라는 명령어가 저장되어 있다면 PC를 점프한다.

     

    IR (Instruction Register)

    PC가 지정하는 번지에 기억되어 있는 명령어를 호출해서 해독하기 위해 명령어를 잠시 보관해 두는 특수 목적 레지스터

     

    ACC (Accumulator)

    최근에 메모리에서 꺼내온 데이터를 보관하는 레지스터

     

    MAR (Memory Address Register)

    Program Counter (PC)가 가리키는 주소를 읽어서 MBR 보내는 레지스터

     

    MBR (Memory Buffer Register)

    MAR으로부터 받은 명령어를 통해 메모리부터 읽거나, 저장할 데이터 자체를 보관하는 레지스터