컴퓨터에 대한 이야기

DevWoony·2021년 4월 9일
0

컴퓨터구조

목록 보기
1/7

컴퓨터구조 - DevWoony가 복습을 위해서 전공과목을 정리하는 내용이에요!

컴퓨터의 정의

컴퓨터는 정해진 명령(프로그램)에 따라 데이터를 처리하는 기계이다. Processor, Input, Output, Memory, Network 요소를 가진다. 이 과목에서는 Processors를 집중적으로 탐구한다.

컴퓨터의 종류

  • Handheld
    • 전용 어플리케이션
  • Desktop
    • 일반적인 목적의 다양한 소프트웨어
    • cost와 performance을 교환을 고려
  • Server
    • 네트워크 기반
    • 높은 capacity, performance, reliability
    • 작은 규모부터 건물만한 규모까지
  • Embedded
    • 시스템에 숨겨져있는 컴포넌트
    • power, performance, cost에 제한
  • Super
    • server에 속하며 그 중 높은 performance와 cost
    • 수백, 수천의 processors
    • terabytes 단위의 메모리
    • petabytes 단위의 저장소
    • high-end급의 과학적 공학적 어플리케이션

프로그램의 구조

  • Application software
    • high-level 언어로 작성
  • System software
    • Compiler가 high-level 언어를 machine code로 변환
    • Oprating System이 input/ouput 제어, 메모리와 저장소 제어, 작업 스케쥴링과 자원공유 역할들을 수행
  • Hardware
    • Processors, memory, I/O controllers로 구

컴퓨터의 구조

컴퓨터의 구조라고 하면 매우 추상적이면 방대한 내용이 포함되어 있다. 정말 많은 연구와 역사를 가지는 기술의 집합체이므로 이를 공부할때는 Abstraction을 통하여 집중할 수 있는 영역을 특정 짓는 일이 중요하다.

우리가 공부할 영역에서 컴퓨터 설계란 컴퓨터의 hardware/software의 interface를 디자인하는 것을 의미한다.

Abstraction을 통하여 설계의 필요한 내용에만 집중하자면 다음과 같다.

  • Instruction set architecture (ISA)
  • Application binary interface (ABI)
  • Implementation

위에 영역에 대해서는 차근차근 알아갈 예정이지만 당장의 이해가 어려우니 조금 더 넓은 영역에서 Absctraction을 보면 다음 그림과 같고 빨강색 영역이 우리가 집중해서 공부할 영역이다.

컴공의 영역

  • Applications software
  • Systems software
  • Assembly Language
  • Machine Language
  • Architectural Issues
  • Sequential logic, finite state machines
  • Combinational logic, arithmetic circuits
  • Boolean logic, 1s and 0s

전자회로의 영역

  • Transistors used to build logic gates (CMOS)
  • Semiconductors/Silicon used to build transistors
  • Properties of atoms, electrons, and quantum dynamics

Instruction Set Architecture (ISA)

ISA는 프로그래머 또는 컴파일러에 의해 사용되는 어셈블리어의 설계이다. 이 영역에서 설계는 다음을 포함한다.

  • Instruction Set
    • 어떤 명령어가 실행되야 하는가?
  • Instruction Format
    • 명령어의 구조는 어떻게 되어 있는가?
  • Data storage
    • 데이터가 어디에 저장되는가?
  • Addressing Modes
    • 데이터는 어떻게 접근하는가?
  • Exceptional Conditions
    • 예외발생시 어떻게 되는가?

이 내용들이 코딩을 할 때 중요하지 않다고 생각될 수 있지만 때떄로 매우 중요하게 도움이 될때가 있다.
컴파일러 작성자, OS 설계자, 특히 일반적인 개발자들에게 무언가 서버인프라나 구축이나 거대한 무언가를 구축 또는 프로그래밍 할 때,
컴퓨터 또는 프로그램의 성능과 가격을 저울질하는 능력을 기르게 될 것이다.

Instruction Execution

  • Instruction Fetch
    • 프로그램 storage에서 instruction을 가져온다.
  • Instruction Decode
    • 가져온 Instruction의 명령의 행동을 취하고 Instruction size 를 결정한다.
  • Operand Fetch
    • 데이터의 연산을 준비한다.
  • Execute
    • 결과값 및 상태를 발생시킨다.
  • Result Store
    • 결과를 저장한다.
  • Next Instruction
    • 다음 명령어를 결정한다.

Machine Organization

Machine Organizaion은 logic designer가 컴퓨터를 볼때의 관점이다. 여기에는 다음과 같은 내용이 포함된다.

  • 기능적 블럭의 capabilities와 performance의 특징
  • 그 블럭들이 어떻게 연결되어 있는지
  • 정보가 블럭들 사이로 어떻게 연결되어 있는지
  • 어떻게 정보가 블럭들 사이로 흐르는지
  • 정보의 흐름이 제어되는 방식과 흐름
  • ISA를 실현하는 기능 블럭의 동일성

일반적으로 Machine organization은 주어진 Instruction set architecture를 충족하기 위해 설계된다.

Processor의 내부

다음 사진들은 실제 프로세스의 내부 구성이다. 전체를 이해하기에는 어렵기에 대략적인 구성만 파악하는데 쓰도록 하자.

출처: [Computer Organization And Design: The Hardware/Software Interface]

profile
냉장고에 카페인이 가득한 회사에 가고싶다.

0개의 댓글