본문 바로가기
System SW

[1] System Software & Instruction Set Architecture

by Hangii 2022. 10. 12.
  • 시스템 소프트웨어
    • 사용자 또는 응용 프로그램의 요구에 따른 컴퓨터 하드웨어 자원의 제어 및 관리를 담당한다.
    • 운영체제(OS), 언어처리기, 유틸리티 프로그램 등으로 구성된다.
      • 운영체제:
        • 좁은 의미의 시스템 소프트웨어
        • 컴퓨터 시스템의 자원(HW/SW)을 관리
        • 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공(하드웨어를 직접 쓰기는 대단히 불편하므로)
        • e.g.) MS Windows, LINUX
        • 운영체제 제작자는 그 운영체제가 사용될 ISA를 알고 있어야 함
      • 언어처리기: 컴파일러, 어셈블러 등을 가리킴
      • 유틸리티 프로그램: 운영체제와 함께 컴퓨터에 설치되는 프로그램
    • Machine Dependent
      • 여기서 Machine은 CPU를 의미한다.
      • Machine마다 기계어의 조합을 어떤 식으로 이해할 것인 지가 미리 약속되어 있다는 의미이다. 즉, 시스템 소프트웨어는 해당 CPU에서 돌아가는 기계어를 알고 있어야 한다.
    • ISA(Instruction Set Architecture) Dependent
  • 응용 프로그램(Application)
    • 시스템 소프트웨어와 대비되는 개념을 가진다.
    • 사용자의 개별 목적에 따른 프로그램이다.
    • Machine Independent
      • 즉, 기계어에 대한 지식이 요구되지 않는다.

  • Instruction Set Architecture(ISA)
    • 머신(CPU)마다 실행될 기계어(instruction)가 정의되어 있는 set을 의미한다.
      • e.g.) 0101은 더하라는 의미임을 사전에 정의해두어 CPU가 0101이라는 기계어를 만났을 때 해당 명령어를 수행하도록 한다. 따라서 하드웨어는 ISA를 알고 있어야 한다.
      • OS, 컴파일러(고급언어->어셈블러->기계어 변환 수행하는 언어처리기), 어셈블러도 마찬가지로 ISA를 알고 있어야 한다. 반면, Application은 ISA로부터 자유롭다.
    • 위의 그림에서 볼 수 있듯이 ISA는 하드웨어와 소프트웨어의 interface역할을 한다.
    • 아래와 같은 소프트웨어 제작자는 해당 ISA에 맞게 HW 또는 SW를 작성해야 한다.
      • machine language programmer(기계어로 프로그램을 작성하는 사람 - 요즘은 거의 안함)
      • operating system designer(운영체제를 설계하는 사람)
      • compiler writer(컴파일러를 만드는 사람: 고급언어 입력을 어떤 기계어로 바꿔야 할 지 알고 있어야 함)
      • hardware designer(하드웨어를 설계하는 사람: 하드웨어에 0101이란 값이 들어왔을 때 어떤 작업을 수행해야할 지 작성해야 함)
  • 컴퓨터 하드웨어가 먼저 만들어진 후 그에 맞게 동작하는 OS, Compiler/Assembler 가 만들어진 것일까, 아니면 OS와 Compiler/Assembler가 특정 기계어에 맞게 동작되도록 제작되고 이에 맞는 HW가 만들어진 것일까? 닭이 먼저일까 달걀이 먼저일까?
    • 정답은 조금 허무하게도 둘 다 아니다. 사실은 기계어 명령에 대한 약속ISA가 가장 먼저 만들어진다. ISA를 참고해서 HW와 SW(OS, Compiler/Assembler) 모두를 만드는 것이다.

  • 컴퓨터의 내부 구조
    • CPU의 구조
      • ALU(산술 논리 연산 장치): add, sub, and, or
      • Register: 연산의 input/output 등을 임시로 저장하는 장치
      • Control Unit
    • Memory
  • ISA에 포함되어 있는 것:
    • Instruction
    • Register
    • Memory

  • ISA에 포함되지 않는 것:
    • 기계어를 실행하는 방법 - Sequential(순차 수행) or Pipelining(병렬 수행)
      • cf) Pipelining의 장점: 빠르다.
    • Cache Memory
      • memory보다 좀 더 빠름. memory에서 가져와야 할 값이 cache안에 있다면 더 메모리에서 가져오는 것보다 더 빠르게 가져오는 것이 가능
      • 하지만 cache memory는 기계어를 정의하는 데 사용되지 않는다. (기계어 입장에서 투명한 계층)
    • I/O device

 


  • 정보 단위 용어
    • bit
      • n bits는 2^n가지 정보를 표현할 수 있음
      • bit = binary digit
    • byte
      • 8bits
      • 1개의 영문자를 기억하는 최소 단위
    • word
      • 컴퓨터 내부의 데이터 처리 및 전송의 단위
    • 1K(Kilo) = 2^10 = 1,024
    • 1M(Mega) = 2^20 = 1,048,576
    • 1G(Giga) = 2^30= 1,073,741,824
    • 1T(Tera) = 2^40 = 1,009,511,627,776

댓글