코드 훔쳐보는 변태 코더
춤 좋아하는 백엔드 개발자(였으면 좋겠다)
컴퓨터 입출력 (1)
컴퓨터 시스템을 구성하는 방법과 동작 원리

컴퓨터 시스템을 구성하는 방법과 동작 원리

  • 시스템 버스 → 통신하기 위한 경로를 버스라고 통하는데, CPU와 메모리간의 통신, CPU와 IO간의 통신은 모두 시스템 버스를 이용하게 된다.
    • 컨트롤 버스
      • 제어 신호를 전달하는 버스이다.
      • 양방향성 버스이다. (바이 디렉셔널)
      • 신호 선들의 집합이다.
    • 어드레스 버스
      • 주소 공간을 보내기 위한 버스이다. (포트번호 등)
      • 어드레스 버스와의 통신은 단방향이다. → 주소공간이라는 개념은 CPU에 의해서 발생이 되서 CPU에서 나가기만 하기 때문이다.
      • 신호 선들의 집합이다. → 주소 선의 갯수는 CPU와 접속될 수 있는 최대 기억장치의 용량을 결정한다. (주소 버스의 비트가 16비트인경우엔 64K의 기억장소의 주소를 지정할 수 있게 된다.)
    • 데이터 버스
      • 정보를 보내기 위한 버스이다.
      • 양방향성 버스이다.
      • 마찬가지로 신호 선들의 집합이다. 비트의 수를 결정하게 된다.
  • 메모리에서 사용되는 버스는 고속의 IO를 요구하는 경우가 많다.
  • 읽기 쓰기 신호는 1비트를 사용하는 신호이기 때문에 0과 1로 신호를 보내게 된다.

기억장치 액세스 동작

  • 액세스
    • 기억장치에 데이터를 쓰거나 읽는 동작을 액세스라고 한다.
  • 기억장치 쓰기
    • CPU는 데이터를 저장할 기억장치의 주소를 주소버스로 보내고 저장할 데이터를 동시에 데이터 버스로 보낸다.
    • 쓰기 신호를 활성화 해 1을 전송한다.
    • 해당 신호가 기억장치 쓰기 동작이 완료가 될때까지 유지가 된다.
      • 저장이 완료될때까지의 시간을 기억장치 쓰기 시간이라고 칭한다.
  • 기억장치 읽기
    • CPU가 기억장치 주소를 주소버스를 통해서 보내고 읽기 신호를 활성화한다.(0)을 보낸다.
    • 기억장치로부터 읽혀진 데이터가 데이터 버스에 실리고, CPU는 데이터버스를 통해서 읽어들인다.
    • 주소를 해독하는데 걸리는 시간이나 기억장치 내부에서 데이터를 인출하는데 시간이 걸리기 떄문에 지연시간이 발생된다.
      • 읽기 동작이 완료될떄까지의 시간을 기억장치 읽기 시간이라고 칭한다.

CPU와 I/O 장치의 접속

  • I/O 제어기 라는것을 이용해야 한다. (바로 연결이 불가능하다.)
  • 입력 출력 명력을 받아서 해당 IO장치에 제어를 하거나 데이터를 이동하거나 하는 명령을 수행하는 역할을 한다.
    • 상태 레지스터
      • IO 장치의 현재 상태를 나타내는 비트를 저장하는 레지스터이다.
    • 데이터 레지스터
      • CPU와 IO장치간에 이동되는 데이터를 일시적으로 저장 할 수 있도록 하는 레지스터이다.
  • IO 장치를 제어하는 방법은 3가지가 존재한다. (나중에 정리)
  • 키보드를 통해서 데이터를 입력한다면 ?
    • 키보드에 어떠한 키를 누르게 되면 해당 키에 대응되는 아스키 코드가 키보드 제어기를 통해서 데이터 레지스터에 저장이 된다.
      • 동시에 상태 레지스터는 입력준비비트가 1이 된다.
    • CPU는 키보드 제어기로부터 상태 레지스터를 읽어서 1이 되었는지 확인하고, 아닌 경우에는 대기했다가 1이 되었는지를 확인하는 과정을 반복한다.
    • 1이 되었다면 데이터 레지스터의 내용을 읽어 데이터를 전달받게 된다.
  • 보조 저장장치들도 IO 컨트롤러를 다 갖고 있다.
    • 키보드나 프린터같은 것들은 바이트 단위로 데이터를 전송하는데, 보조 저장장치는 블록을 단위로 전송한다.
    • 이것을 버퍼라고 한다.
    • 보조 저장장치에서 사용되는 데이터 레지스터를 데이터 버퍼라고 칭한다.

컴퓨터 구조의 발전 과정

계산장치의 역사

  • 초기의 계산 장치 → 기계식 계산기들을 얘기한다.
    • 1642년 파스칼 라인
      • 파스칼이 개발하였다.
      • 톱니바퀴를 이용한 수동계산기이다. (덧셈과 뺄셈만 가능하다.)
    • 1671년 가감승제 계산기
      • 라이프니츠 (2진법 창시자)
      • 곱셈과 나눗셈도 가능한 계산기이다.
    • 이후에 자동 계산기가 등장하게 된다.
    • 1823 년 차분기관 (차등기라고 표현하기도 한다.)
      • 찰스 배비지
      • 증기로 작동하는 자동 계산기이다.
      • 삼각 함수를 계산하여 종이에 인쇄한다. (소숫점 5자리까지 계산이 가능했다.)
    • 찰스 배비지가 차분기관을 발전시켜 1837년에 해석기관을 설계하게 된다.
      • 방정식을 순차적으로 풀 수 있도록 기계식 계산기를 설계하게 된다.
  • 해석기관의 기본 구조
    • 연산장치 MILL
    • 기억장치 STORE
    • 입력장치 카드 판독기
      • 출력장치 프린터, 카드천공기
    • 연산 카드에 의해서 미리 수행할 연산이 지정이 되고, 해당 연산에 사용될 데이터의 주소는 변수카드에 의해서 지정이 된다.
      • 그러면 MILL은 스토어 내의 지정된 위치로부터 데이터를 읽어와서 레지스터에 저장하고, 연산을 수행한 후에 결과값을 스토어에 저장한다.
      • 여기서 연산 카드와 변수 카드의 내용을 합한것이 프로그램 코드에 해당이 된다.
      • 현대 컴퓨터와 아주 유사한 방식을 갖고 있다.
    • 주요 부품들이 기계장치였기 때문에 속도가 느릴 수 밖에 없었다.
    • 진공관이 발명이 되면서 단점이 개선이 되었다.

주요 컴퓨터 부품들의 발전

  • 릴레이 (진공관 이전)
    • 기계식 스위치를 얘기한다.
    • 마모가 일어나고 수명이 짧다.
    • 개폐를 할때 채터링이라는 현상이 일어난다. (스위치를 눌렀다가 떼면 스위치가 물리적으로 떨리기 때문에 진동에 의해서 여러번 눌러진것같은 현상)
  • 진공관
    • 진공 속에서 전자의 움직임을 통해서 제어를 했다.
    • 움직이는 부분이 없기 때문에 마모도 적고, 전환 속도도 굉장히 빨랐다.
    • 잘 부숴지고 고장이 잘 났고, 고가였다.
  • 트랜지스터
    • 트랜스퍼 + 래지스터의 합성어 (저항기)
    • 반도체이다.
    • 반극성 트랜지스터와 쌍극성 트랜지스터로 나뉜다.
    • 쌍극성 트랜지스터가 우리가 일반적으로 말하는 트랜지스터이다.
    • 주로 실리콘을 재료로 한다.

폰노이만 구조

  • 메모리 영역이 프로그램과 데이터가 나뉘어져 있지 않다.
  • 주소버스 데이터버스를 메모리가 공유하게 된다.
  • 하버드 구조와 달리 병합이 일어난다.
  • 폰노이만 구조는 만들기가 단순하기 떄문에 많이 채택되고있다.

 

마무리

  • 시스템버스가 단순히 하나로 이뤄진게 아닌 세분화되어 있다는것을 알게됐습니다.
    • 중요하게 생각해봐야 할 부분은 단방향으로 통신하는 주소버스와 양방향으로 통신하는 데이터버스, 컨트롤버스의 차이점 같습니다.
    • 약간 어떻게 생각을 해보니 MVC 패턴과 비슷한....? 것 같습니다. 비슷하다고 말하지 말고 이해를 해야되는 상황에 MVC에 대입해서 생각해보면 이해가 좀 더 빠르지 않을까 하는 생각이 듭니다.
  • 강의가 살짝 불친절한것 같다는 생각이 듭니다.
  • 폰노이만 구조에 대해서 제대로 설명을 안하고 넘어가셨습니다.
  • 따로 검색해서 정리를 하라는 뜻으로 받아들여야겠습니다. 
  • 단순히 타이핑을 할때도 한번의 통신을 하는게 아닌 상태 레지스터를 통해 확인을 하고 다시 데이터 레지스터에 접근해 내용을 읽어서 데이터 버스로 전달이 되는것 같습니다.
  Comments,     Trackbacks