이론 정리/컴퓨터 구조

한 권으로 읽는 컴퓨터 구조와 프로그래밍 2장 정리

철매존 2024. 3. 24. 23:30
728x90

하드웨어 : 비트에 대해 동작하는 장치를 포함해 모든 물리적인 장치
그 중에서 조합 논리(불리언 대수) 를 구현하는 하드웨어에 대해 살펴볼 것이다.

  • 디지털 컴퓨터의 사례
    • 톱니바퀴 이용
      • 두 바퀴의 상대적 회전 속도를 통한 계산
    • 계산자
      • log(x*y) = log(x) + log(y) 를 이용하여 계산하는것
      • 앞의 x만큼 띄어서 y해당 계산자를 붙이면 곱셈값을 구할 수 있다.
      • 추가로 이거 밑이 10인 상용로그라 10의 거듭제곱도 쉽게 구할수있음(그거는 그냥 숫자처리하면 되니까)
    • 차분기관같은것도 있었다고 함
  • 아날로그 디지털 차이
    • 디지털 : 이산적 -> 하나하나 다른 존재로 구분된다. 정수만 표현 가능
    • 아날로그 : 연속적 -> 실수를 표현 가능
    • 즉 계산자같은 애들은 아날로그 컴퓨터임
      • 이거는 문제가 실수의 범위가 커질수록 찾기가 쉽지 않다는것
      • 하드웨어에서는 크기가 중요하다.
        • 컴퓨터 클록 속도가 40GHz라고 하면 1초에 40억개의 계산을 할 수있다는 것이다.
        • 이게 결국 전자가 어떤 속도로 이동해야하는거 -> 따라서 하드웨어 크기가 작으면 효율적인것이다.
        • 근데 물체가 너무 작으면 속도나 효율은 좋아지지만 간섭하기가 아주 쉬워진다.
          • 그래서 디지털을 만드는것이 필요한데, 생각해보면 디지털이라는게 어쨌든 아날로그 세상에 존재하는것이다. -> 그래서 어떻게든 디지털로 만들어야 할 것
  • 아날로그에서 디지털 만들기
    • 전이 함수

 

      • 중요한건 함수에 있어 상단부/하단부가 아닌 직선부에 닿도록 해야하는것(그래야 너무 밝거나 어둡거나 하지 않으니)
      • 만약 증폭 전이 함수의 기울기가 크면(직선부가 가파르면) 출력이 이상해짐
        1. 입력의 범위가 직선부뿐 아니라 상단/하단부에 해당하면 왜곡이 생김
        2. 출력이 확 커짐
        • 이런 입력이 조금만 번해도 곡선의 가파른 부분 때문에 출력이 커지는 판정 기준을 문턱값이라고 한다.
          • 여기서 보면 이런 문턱값의 왜곡 발생은 결국 하단부 -> 상단부로의 변경을 뜻하는 것인데(말하자면 직선부를 지나쳤다 - 계단이 변경됨) 이를 통해 왜곡으로 디지털 값을 만들수 있다.
            • 디지털은 결국 직선부를 최대한 작게 만드는 것
  • 10진 숫자 대신 비트를 사용하는 이유
    • 당연한거임 -> 10진수 만드는것보다 그냥 문턱값에서 하나 올리면서 그거를 10개 쓰는게 나음
    • 하단부 : 차단 / 상단부 : 포화
    • 전이함수를 아주 가파르게 하면 간단!
  • 비트를 처리하기 위한 하드웨어
    • 릴레이, 진공관 -> 속도가 느림
    • 트랜지스터
      • transfer resistor(전송 저항)의 줄임말
      • 여러 유형이 있는데 중요한 두 가지 유형
        • BJT(쌍극 접합 트랜지스터)
          • 전기가 한 방향으로만 흐른다.
        • FET(전계 효과 트랜지스터)
          • 정전기 효과를 사용해 스위치 움직임
          • MOSFET(금속산화물 반도체 전계 효과 트랜지스터) 라는게 있는데 이거는 FET의 일종이고 전력 소모가 적어서 현대 컴퓨터 칩에서 가장 널리 쓰이는중이다.
    • 집적 회로
      • 트랜지스터를 쓰면 간단한 회로를 만들 때에도 부품이 너무 많이 필요
      • 복잡한 시스템을 간단히 만들 수 있다.
      • 칩이라고도 불림
  • 논리 게이트
    • AND / OR / XOR / 인버터(NOT)같은 애들을 미리 만들어놓은 게이트
    • NAND / NOR
      • 얘들은 논리 게이트에서 가장 단순한애들
      • 그래서 싸고 반응속도도 빠르고 전력소모도 적음
        • 그래서 기본적으로 이것들이 쓰인다.
    • 참고로 입력이 3개인 것도 있음
    • 이력 현상을 활용한 잡음 내서 향상
      • 위의 게이트를 써서 논리 신호가 0->1 1->0 순식간에 샥샥 가는게 아님
      • 대부분 천천히 바뀌는 경우가 많고 잡음이 있으므로 문턱값을 여러번 오락가락하는 글리치(작은 오류) 바랭
      • 이런거를 이력 현상을 위해 방지 가능하다.
        • 이력 현상이란 판정 기준이 이력(과거에 벌어진 일)에 따라 달라진다는 뜻
        • 0 -> 1 : 오른쪽 곡선 사용(/ 요런 형태)
        • 1 -> 0 : 왼쪽 곡선 사용(\ 요런 형태)
        • 여기서 보면 올라가는신호랑 내려가는신호는 각각 다른 문턱값이 생긴다.
          • 즉, 입력신호가 두 문턱값중 하나를 넘어간 경우, 반대쪽 문턱값을 지나가며 출력이 반전되려면 값이 많이 변해야 한다는 것이다. -> 잡음 내성이 커진다(흔들려서 실수로 내려가는 경우에 곡선이 반대면 크기에 따른 판별 가능)
      • 요거를 활용하는 게이트가 슈미트 트리거
        • 참고로 이거는 비싸고 복잡해서 필요한 경우에만 사용한다.
    • 차동 신호
      • 잡음이 너무 많으면 위의 이력으로 충분하지 않을 수 있다.
      • 그래서 아예 2개를 만들어서 서로의 상대적 위치로 판단할 수 있다.
        • 그런 경우는 잡음으로 위치 높낮이가 커져도 상대적 위치가 같으므로 (XO / OX) 값이 일정
      • 이게 어떻게 가능한지?
        • 드라이버를 통해 한번에 받은 신호를 하나는 그대로, 하나는 반전(O -> O,X)
        • OX인 상태로 가니까 잡음이 있건 없건 그대로 송신
        • 리시버로 그걸 다시 전환(OX + 잡음이여도 어차피 위치는 아니까)
    • 전파 지연
      • 입력의 변화가 출력에 영향을 미칠 때까지 걸리는 시간
      • 정확한 값은 아니고 측정값이다. 그리고 이거를 잘 계산해서 설계해야한다.(출력이 언제올지를 알아야하니까)
    • 출력 유형
      • 토템폴 출력
        • 일반적인 게이트 출력
        • 트랜지스터가 토템폴처럼 세로로 나란히 늘어서 있어서 붙음


      • 각각 스위치는 서로 반대로 동작(하나가 ON되면 하나는 OFF)

      •  
      • 요렇게 생각할 때 ON이라 하면(위쪽에만 연결, 아래애는 끊김)

      •  
      • 이런 식으로 H가 되고
      • 만약 반대로 OFF라 하면(위쪽이 끊기고 아래가 연결)

      •  
      • 요렇게 L가 되어 출력이 없는것
    • 액티브 풀업이라 서로 연결하면 안된다.
      • 즉 둘다 ON이라면?

      • 그냥 흘러버려서 전류가 확 커져서 큰일남(불탐)
  • 오픈 컬렉터 출력
    • 오픈컬렉터 / 오픈트레인

    • 원하는게 0이면 되는데, 1이면 걍 떠있다.
    • 1이면 전류가 그냥 흘러가는 상태로 둬서 AND 유지된다.
    • 0이면 AND쪽이 아니라 연결된쪽으로 흘러서 AND가 되지 못한다.
      • 하나라도 끊어져 있으면 싹다 안되는거지
    • 이거는 출력이 여러개 있는 액티브 풀업이 아니기 때문에 출력을 연결 가능하다.
      • 그냥 흐르는지 / 흐르지 않는지이니까
      •  
  • 트라이스테이트 출력
    • 오픈컬렉터는 출력 연결은 되는데 액티브 풀업보다 속도가 느리다.
    • 토템폴에서 트라이스테이트 출력을 한쪽에다가 더해준다

  • 요런 느낌으로 하나 추가해주면

  • 요런 식으로 둘다 스위치를 동일하게 ON/ON, OFF/OFF 이렇게 해도 다르게 동작하도록 해주는것