본문 바로가기
Computer Science/컴퓨터구조

컴퓨터구조의 전반적인 소개 (1) 무어의 법칙, 컴퓨터 종류 및 구조, 프로그래밍 코드 계층 이해하기

by 큌 2024. 4. 29.
반응형

1. 컴퓨터 혁명

  • 컴퓨터 기술의 발전은 무어의 법칙에 의해 뒷받침되며, 새로운 응용 프로그램을 가능하게 함.
  • 컴퓨터는 자동차, 휴대 전화, 인간 게놈 프로젝트, 월드 와이드 웹, 검색 엔진 등 다양한 분야에서 만연하게 사용.
  • 이러한 기술의 발전은 우리의 일상생활뿐만 아니라 과학, 의학, 산업 등 거의 모든 분야에 혁신적인 변화.

2. 무어의 법칙(1965)

  • 무어의 법칙은 마이크로프로세서 제조 및 아키텍처에서 가장 중요한 지침 중 하나.
  • 이 법칙은 "칩 당 트랜지스터 수가 18개월마다 두 배로 증가할 것"이라고 예측했으며, "칩의 복잡성이 증가함에 따라 제조 공장의 비용도 기하급수적으로 증가할 것"이라고 말함.
    • 이 두 가지 주장은 40년이 넘는 시간 동안 여전히 유효.
  • 무어의 법칙 덕분에, 컴퓨터 기술은 빠르게 발전하여 오늘날 우리가 보는 다양한 혁신적인 기술들을 가능.
  • 칩의 크기는 줄어들면서도 성능은 향상되었고, 이로 인해 더 작고, 빠르며, 효율적인 컴퓨팅 장치의 개발이 가능해졌다.

3. Classes of Computers

  • 컴퓨터는 다양한 유형으로 분류될 수 있으며, 각각의 클래스는 특정 목적과 환경에 최적화되어 있다.
    • 데스크탑 컴퓨터(Desktop computers):
      • 일반적으로 다양한 소프트웨어를 실행할 수 있는 범용 컴퓨터.
      • 비용과 성능 사이의 균형을 맞추어야 하는 경우가 많으며, 사용자의 요구에 따라 다양한 구성으로 조정될 수 있다.
    • 서버 컴퓨터(Server computers):
      • 네트워크 기반으로 작동하며, 데이터 처리 및 저장, 네트워크 관리 등의 역할.
      • 고성능, 고효율, 높은 신뢰성을 요구하며, 크기는 소규모 서버부터 건물 크기에 이르기까지 다양.
    • 임베디드 컴퓨터(Embedded computers):
      • 다른 시스템의 일부로 통합되어 숨겨져 있으며, 특정 작업을 수행하기 위해 설계되었다.
      • 엄격한 전력, 성능, 비용 제약 조건 하에서 작동해야 하며, 일상 생활에서 흔히 볼 수 있는 다양한 기기(예: 가전제품, 자동차, 의료 장비 등)에 사용.
  • 각 클래스의 컴퓨터는 특정 사용 사례와 요구 사항에 맞게 설계되었으며, 현대 사회에서 중요한 역할을 하고 있다.

4. ThePostPC Era

5. 컴퓨터 구조에서 배우는 전반적인 내용

  • 프로그램이 어떻게 기계 언어로 번역되고, 하드웨어가 이를 어떻게 실행하는지, 그리고 프로그램 성능이 무엇에 의해 결정되고 어떻게 개선될 수 있는지를 이해하는 것은 컴퓨터 공학의 핵심 요소.
    • 프로그램이 기계 언어로 번역되는 과정:
      • 프로그래밍 언어로 작성된 프로그램은 컴파일러에 의해 기계 언어로 번역.
      • 기계 언어는 컴퓨터의 프로세서가 직접 이해하고 실행할 수 있는 이진 코드.
      • 이 과정에서 고수준 언어의 추상화된 명령들이 프로세서가 실행할 수 있는 구체적인 명령어로 변환.
    • 하드웨어의 실행 과정:
      • 변환된 기계 언어 코드는 프로세서에 의해 해석되고 실행.
      • 프로세서는 명령어를 순차적으로 또는 병렬로 처리하여 논리적, 산술적 연산을 수행하고, 메모리 접근, 입력/출력 관리 등의 작업을 진행.
    • 하드웨어/소프트웨어 인터페이스:
      • 프로그램의 실행을 위해서는 하드웨어와 소프트웨어 간의 상호 작용이 필수적.
      • 이를 위해 운영 체제(OS)가 중요한 역할을 하며, 하드웨어 리소스의 관리 및 할당, 프로세스 스케줄링 등을 담당.
    • 프로그램 성능 결정 요소:
      • 프로그램의 성능은 알고리즘, 프로그래밍 언어, 컴파일러, 하드웨어 아키텍처, 프로세서와 메모리 시스템, 그리고 입출력 시스템에 의해 결정.
  • 이 요소들은 프로그램의 동작 속도와 효율성에 직접적인 영향을 미침.
  • 성능 개선 방법:
    • 하드웨어 설계자는 프로세서의 클록 속도를 높이거나, 더 효율적인 명령어 세트를 구현하고, 병렬 처리 기술을 도입하는 방식으로 성능을 향상시킬 수 있다.
  • 병렬 처리란 무엇인가:
    • 병렬 처리는 여러 프로세서 또는 여러 계산 유닛이 동시에 다양한 계산 작업을 수행하는 기술.
    • 이 방법은 프로그램의 실행 시간을 단축시키고, 더 복잡한 문제를 더 빠르게 해결할 수 있게 함.
  • 프로그램 성능의 이해와 개선은 지속적인 연구와 혁신을 통해 발전해 가고 있으며, 이는 더 빠르고 효율적인 컴퓨팅 환경을 구현하는 데 기여하고 있다.

6. 프로그램의 구성

  • 프로그램을 구성하고 실행하는 과정은 여러 계층을 포함하고 있으며, 각 계층은 소프트웨어와 하드웨어의 복잡한 상호작용을 나타냄.
  • 응용 소프트웨어(Application software):
    • 문제 해결이나 특정 작업을 수행하기 위해 사용자가 직접 사용하는 소프트웨어.
    • 고급 언어로 작성되며, 사용자 친화적인 기능과 인터페이스를 제공.
  • 시스템 소프트웨어(System software):
    • 컴파일러(Compiler):
      • 고급 언어로 작성된 코드를 기계어 코드로 변환.
      • 이는 프로세서가 이해하고 실행할 수 있는 유일한 언어.
    • 운영체제(Operating System):
      • 시스템의 하드웨어와 소프트웨어 자원을 관리하고, 입력/출력 처리, 메모리 및 저장소 관리, 작업 스케줄링 및 자원 공유 등의 서비스를 제공.
  • 하드웨어(Hardware):
    • 프로세서(Processor), 메모리, 입출력(I/O) 컨트롤러 등을 포함.
    • 이들은 실제 데이터 처리, 저장, 전송을 담당하는 물리적 구성 요소. 

7. 프로그램 코드의 계층(Levels of Program Code)

  • 고급 언어(High-level language):
    • 문제 도메인에 가까운 추상화 수준을 제공.
    • 개발자의 생산성과 프로그램의 이식성을 높이는 데 유리.
  • 어셈블리 언어(Assembly language):
    • 기계어 지시사항의 텍스트 표현.
    • 하드웨어에 더 가까우며, 프로그래머가 보다 세밀하게 하드웨어를 제어할 수 있게 함.
  • 기계어(Binary digits, bits):
    • 프로세서가 직접 이해하고 실행할 수 있는 인코딩된 지시사항과 데이터로 구성.
    • 모든 프로그램과 명령은 결국 이 기계어로 변환되어 실행.
  • 각 계층은 프로그램 실행과 컴퓨터 작동의 필수적인 부분으로, 소프트웨어의 개발부터 하드웨어에서의 실행까지 전 과정을 아우름.

 

8. 컴퓨터 구성 요소 

  • 모든 종류의 컴퓨터, 즉 데스크탑, 서버, 임베디드 시스템은 기본적으로 동일한 구성 요소를 가지고 있다.
  • 이 구성 요소들은 크게 입력/출력 장치, 저장 장치, 그리고 네트워크 어댑터로 구분할 수 있다.
    • 입력/출력 장치:
      • 사용자 인터페이스 장치에는 컴퓨터와 사용자 간의 상호작용을 가능하게 하는 장치들이 포함.
      • 대표적으로 디스플레이, 키보드, 마우스가 있다.
      • 이 장치들은 사용자가 컴퓨터에 명령을 입력하고 컴퓨터로부터 정보를 받아볼 수 있게 해줌.
    • 저장 장치:
      • 데이터와 프로그램을 저장하는 데 사용되는 장치들.
      • 하드 디스크, CD/DVD 드라이브, 플래시 드라이브 등이 여기에 속함.
      • 이들은 컴퓨터의 영구적 혹은 일시적 데이터 저장공간으로 활용.
    • 네트워크 어댑터:
      • 컴퓨터가 다른 컴퓨터들과 통신할 수 있게 하는 장치.
      • 유선 LAN 어댑터, 무선 Wi-Fi 어댑터 등이 이에 해당.
      • 이를 통해 인터넷 접속이 가능해지며, 네트워크상의 다른 컴퓨터들과 데이터를 주고받을 수 있다.

9. CPU 내부 

  • 프로세서(중앙 처리 장치, CPU) 내부는 크게 데이터 경로, 제어 유닛, 그리고 캐시 메모리 세 부분으로 구성.
    • 데이터 경로(Data Path):
      • 데이터 경로는 데이터에 대한 연산을 수행하는 부분.
      • 산술 및 논리 연산, 데이터 전송 등의 기본적인 연산을 처리하여 프로그램의 지시에 따라 데이터를 조작.
    • 제어(Control):
      • 제어 유닛은 데이터 경로, 메모리 등 프로세서 내부의 다양한 부분들이 정확한 순서로 동작하도록 지시.
      • 이는 프로세서가 수행해야 할 명령어를 해석하여 각각의 명령이 어떤 연산으로 구성되어 있는지 결정하고, 필요한 연산을 데이터 경로에 지시하는 역할.
    • 캐시 메모리(Cache Memory):
      • 캐시 메모리는 소량이지만 빠른 SRAM(Static Random-Access Memory)으로 구성된 메모리.
      • 프로세서가 자주 접근하는 데이터나 명령어를 임시로 저장해 두어, 데이터 접근 시간을 줄이고 전체적인 처리 속도를 향상시키는 역할.
  • 이 세 부분은 서로 밀접하게 연결되어 있어, 프로세서가 효율적으로 작동할 수 있게 도움.
  • 데이터 경로와 제어 유닛은 프로세서의 핵심적인 연산과 명령어 처리를 담당하며, 캐시 메모리는 이러한 연산의 속도를 가속화하는 데 중요한 역할.

10. 추상화

  • 추상화는 복잡성을 다루는 데 도움.
    • 이는 하위 수준의 세부 사항을 숨기는 방법을 통해 이루어짐.
  • 컴퓨터 시스템에서 추상화의 몇 가지 예는 다음과 같다.
    • 명령어 집합 아키텍처(ISA):
      • 하드웨어와 소프트웨어 간의 인터페이스.
      • 프로그래머가 사용하는 명령어와 하드웨어가 이해할 수 있는 명령어 사이를 연결.
    • 응용 프로그램 이진 인터페이스(ABI):
      • ISA와 시스템 소프트웨어 인터페이스를 포함.
      • 이는 소프트웨어가 특정 운영체제 상에서 동작할 수 있도록 하는 규칙과 표준을 정의.
    • 구현:
      • 추상화 뒤에 숨겨진 세부적인 사항과 인터페이스.
      • 이는 실제로 하드웨어가 어떻게 구성되어 있고, 소프트웨어가 실제로 어떻게 실행되는지를 포함.

11. 데이터를 안전하게 보관하는 장소

  • 휘발성 주 메모리:
    • 전원이 꺼지면 내용이 사라지는 메모리.
    • 예를 들어, DRAM.
    • 주로 컴퓨터가 작동 중일 때 데이터와 명령어를 일시적으로 저장하는 데 사용.
  • 비휘발성 보조 메모리:
    • 전원이 꺼져도 내용이 유지되는 메모리.
    • 자기 디스크, 플래시 메모리, 광 디스크(CD-ROM, DVD) 등이 포함.
    • 주로 데이터를 영구적으로 저장하는 데 사용.
반응형