Rad Blog

Archive

1. 컴퓨터 구조와 프로그래밍 모델 정리

2020-10-04 system xfrnk2

추천 받은 책 “뇌를 자극하는 윈도우즈 시스템 프로그래밍-윤성우”를 읽고 공부한 내용을 정리하여 올리고자 마음 먹었다.그 첫번째 단원인 컴퓨터 구조와 프로그래밍 모델 정리다.

현대 컴퓨터 구조 주요요소

  • ALU(Arithmetic Logic Unit:산술 논리 장치) : 산술연산과 논리연산
  • 컨트롤 유닛 : 해석
  • 레지스터 (IR : Fetch시 저장 , PC : 위치 기억)
  • I/O 버스 (후술)

폰 노이만 아키텍쳐 (Stored Program Concept)

  • 의의 : 오늘날 컴퓨터 구조의 시초이자 일치하는 구조
  • 최초 적용 : EDSAC(에드삭 / 1949/05/06), 고안 7년 후 탄생, 오른쪽 4번째 7인 2의 지수 최솟값 일화
  • 형태 : 프로그램이 컴퓨터 내부에 저장되는 구조

프로그램 실행과정

  1. 전처리기 : 치환작업, (#include 등)#으로 시작하는 지시자의 지시에 따라 소스코드를 적절히 변경
  2. 컴파일러 : 사람이 사용할 수 있는 언어를 컴퓨터가 이해할수 있는, CPU에게 일을 시키기 위한 명령어 즉 기계어로, 어셈블리어로 번역
  3. 어셈블러 : 어셈블리 코드를 CPU가 이해할 수 있는 바이너리 코드로 바꾸어주는 프로그램
  4. 링커 : 프로그램 내에서 참조하는 함수나 라이브러리들을 하나로 묶는 (혹은 연결시켜주는) 작업
    -> 실제로 실행 가능한, 컴퓨터가 실행해야 하는 바이너리 코드로 된 실행 파일이 생성됨
  5. 실행파일 : 메모리 공간에 올라가고 난 다음 CPU에 의해서 실행됨.(순차적으로)

단계

  1. Fetch : 메모리상 존재 명령어를 CPU로 가져옴
  2. Decode : 명령어 해석
  3. Execution : CPU가 해석된 명령어를 실행

데이터 이동이 기반이 되는 BUS 시스템, 또는 콘트롤러, 또는 어댑터

  • 역할 : 여러 장치들이 데이터를 주고 받기 위한 통로 -> I/O 버스 : 장치마다 있음
  • 데이터 버스 : 피연산자나 명령어 전달
  • 어드레스 버스 : 주소값 전달로 해당 데이터 가져오기 기능
  • 컨트롤 버스 : CPU가 원하는 바를 메모리에 전달하는 일종의 Sign 전달

현대 컴퓨터 구조 + 폰 노이만 컴퓨터 구조

이미지1

  • 비고 : 연산은 ALU가 하나, 명령어를 분석해서 해야할 일을 결정하는 요소는 컨트롤 유닛이다.

클럭 신호 (펄스)

이미지2

  1. 연산장치가 빠르면 버퍼를 덮어써버려서 일부가 출력되지 않는 문제 발생
  2. 출력장치가 빠르면 한 번 가져간 것을 또다시 가져가는 문제 발생

-> 동기화 필요
속도가 느린 장치에 맞춘다.

  • 비고 : CPU 1.6MHZ는 1초 160만번 클럭 발생,
    1초 160만번 연산 -> 높을수록 초당 처리가능 명령 증가 -> 성능 향상
comments powered by Disqus