[컴퓨터과학] Computer 기초 - Accumulator & Programming

Kyung Jae, Cheong·2024년 11월 1일
post-thumbnail

Computer 기초 - Accumulator & Programming

1. Accumulator (누산기)

누산기(Accumulator)는 컴퓨터 연산에서 중요한 역할을 하는 레지스터로, 계산 결과를 일시적으로 저장하는 데 사용됩니다.

  • 특히, 산술 연산과 논리 연산의 결과를 저장하고 다음 계산에 활용할 수 있게 합니다.
  • 컴퓨터에서 레지스터는 CPU가 작업을 처리하는 데 필요한 데이터를 일시적으로 저장하는 고속 메모리입니다.

Accumulator의 누적 연산 역할은 여러 개의 값을 연속해서 덧셈하거나 곱셈할 때 유용합니다.

  • 예를 들어, 여러 숫자의 합을 구하는 프로그램에서 누산기는 각 숫자를 더하면서 누적된 합을 유지할 수 있습니다.
  • 이를 통해 프로그램이 메모리의 다른 위치를 사용할 필요 없이 효율적으로 연산을 이어갈 수 있습니다.

1.1 Accumulator의 Clear 기능

  • Clear 입력: Accumulator에 저장된 데이터를 삭제하는 역할을 합니다.
    • Clear1이 되면 출력 Q가 0이 되어, 누산기 내 데이터를 초기화할 수 있습니다.
    • 이를 통해 필요 없는 데이터를 삭제하고 새로운 데이터로 교체할 수 있습니다.

1.2 8-Bit Accumulator 구성

누산기는 8비트 덧셈기(Adder)8비트 래치(Latch)로 구성되어 있으며, 다음과 같은 구조로 동작합니다.

  • 8비트 래치: Clear 스위치를 통해 입력된 데이터를 초기화할 수 있으며, Add 스위치를 통해 입력된 데이터를 저장할 수 있습니다.
  • 덧셈 연산: 8비트 Adder가 덧셈 연산을 수행하고, 그 결과가 래치에 저장됩니다.

사용 예시: Clear를 통해 기존 데이터를 삭제한 후, Switches로 값을 입력하고 Add를 누르면 누산기에 새로운 데이터가 저장됩니다. 이후 덧셈 연산을 반복할 수 있습니다.

2. Programming

2.1 Data와 Code 구분 처리

컴퓨터는 Data(데이터)Code(명령어)를 구분하여 처리합니다. 이를 통해 데이터와 코드의 혼동을 방지하며, 프로그램이 효율적으로 실행됩니다.

  • Instruction Code (명령 코드): 컴퓨터가 실행할 동작을 지정하는 코드입니다.
    • 예를 들어, Load, Add, Store 명령어를 각각의 주소에 대응하는 값으로 정의하여, 특정 주소에 저장된 명령어를 실행할 수 있습니다.

Code와 Data를 분리하여 저장하면 프로그램의 안전성과 효율성을 높일 수 있습니다.

  • 예를 들어, 데이터를 저장하는 주소에 명령어가 쓰이지 않도록 하여, 데이터와 코드가 혼동되지 않도록 합니다.

2.2 Instruction Set과 코드

Instruction Set은 CPU가 이해하고 실행할 수 있는 명령어 집합으로, 컴퓨터 프로그래밍에서 중요한 역할을 합니다.

  • Software: 코드와 데이터로 이루어집니다.
    • Software Engineer가 프로그램의 코드를 작성하면, 이러한 코드를 CPU가 직접 이해할 수 있는 Machine Language(기계어)Instruction Code로 변환해야 합니다.
  • 컴파일: 프로그래밍 언어로 작성된 프로그램은 컴파일러를 통해 CPU가 제공하는 Instruction Code를 기반으로 변환됩니다.
    • 참고로, 파이썬은 컴파일을 거치지 않고 명령을 해석하며 실행하는 인터프리터 언어(Interpreted Language)라서 별도의 컴파일 과정이 필요하진 않습니다.

Instruction Code 약어

Instruction Code는 주로 약어로 표현되어 사용됩니다. 예를 들어:

  • LOD A, [1003h]
    • LOD10h에 해당하는 Instruction Code를 나타내며, AAccumulator를 나타냅니다.
    • 따라서 LOD A, [1003h]1003h 주소에 있는 데이터를 Accumulator에 로드하라는 의미가 됩니다.

주소에 이름 붙이기

대부분의 프로그래밍 언어에서는 주소(Address)에 이름을 붙여 코드 재작성 시 가독성을 높이고, 주소 변경의 영향을 최소화할 수 있습니다.

  • 예시
    • Assembly : BEGIN: LOD A, [1005h]
    • 고급 언어에서는 함수와 변수에 이름을 붙여 주소를 관리합니다.

2.3 Program Counter (PC)

Program Counter(PC)다음에 실행할 명령의 메모리 주소를 가리키는 16비트 카운터입니다. PC는 프로그램이 순차적으로 실행되도록 조정하며, 클럭 신호에 따라 값이 1씩 증가합니다.

  • 작동 방식: Clear 스위치가 0일 때, PC0000h에서 시작하여 명령어를 순차적으로 로드합니다.
  • 클럭 신호: 클럭 신호에 따라 PC 값이 1씩 증가하면서, 다음 명령어를 실행할 주소를 지정합니다.

PC는 프로그램의 마지막 주소에 도달하면 초기 주소로 돌아가거나, 다음 프로그램의 시작 주소로 이동하는 방식으로 프로그램이 순환할 수 있습니다. 이를 통해 프로그램이 반복적으로 실행되거나, 다음 작업으로 자동 이동할 수 있습니다.

2.4 Automation (자동화)

Automation(자동화)는 컴퓨터가 특정 작업을 반복적으로 수행하도록 설정하는 개념입니다. 이를 통해 프로그램은 일련의 작업을 자동으로 수행하며 원하는 결과를 얻을 수 있습니다.

  • 예시: 특정 주소에 데이터를 저장하고, 이를 더한 결과를 다른 주소에 저장하는 자동화된 프로그램을 작성할 수 있습니다.
  • 메모리의 0000h 주소부터 데이터가 저장되고, 클럭 신호에 따라 프로그램이 자동으로 다음 명령어를 실행하여 연산을 진행합니다.
    • 이때 Program Counter (PC)에서 다음 명령어 주소를 지정하게 됩니다

h16진수를 의미하며, 각 명령어를 16진수로 변환하여 메모리에 저장할 수 있습니다.

마무리

이번 포스팅에서는 Accumulator기본 프로그래밍 원리를 통해 컴퓨터 내부에서 데이터가 어떻게 처리되고 저장되는지에 대해 살펴보았습니다.

  • 누산기(Accumulator)를 통한 데이터의 누적 연산, Instruction Set을 사용한 명령어 실행, 그리고 Program Counter(PC)의 순차적 실행 흐름을 이해하면 컴퓨터가 연산과 명령 수행을 어떻게 효율적으로 관리하는지 알 수 있습니다.

다음 포스팅에서는 CPU의 구조와 실행 흐름에 대해 더 깊이 살펴보고, 메모리 계층과 DMA(Direct Memory Access)가 컴퓨터 시스템의 성능에 어떤 영향을 미치는지 다룰 예정입니다. CPU 내부의 데이터 처리와 명령어 흐름을 구체적으로 설명하며, 고속 연산을 위한 메모리 관리와 효율성을 위한 DMA의 역할도 함께 살펴보겠습니다.

profile
일 때문에 포스팅은 잠시 쉬어요 ㅠ 바쁘다 바빠 모두들 화이팅! // Machine Learning (AI) Engineer & BackEnd Engineer (Entry)

0개의 댓글