Dev.YoungKyu
YoungKyu's Devlog
전체 방문자
오늘
어제
  • 분류 전체보기
    • 부스트캠프
    • iOS
    • visionOS
    • Backend
    • 알고리즘
    • CS
    • Git
    • Python
    • 끄적끄적

블로그 메뉴

  • 홈
  • 🌝 티스토리 홈
  • ⭐️ 깃허브
  • 태그

공지사항

인기 글

최근 댓글

최근 글

태그

  • 소프트웨어 테스트
  • jekyll
  • Swift5.7
  • guard
  • image
  • Concurrency
  • CS
  • 부스트캠프
  • 모듈화
  • boj
  • Python
  • swift
  • ImageResource
  • if let
  • AutoLayout
  • authenticationinterceptor
  • 소프트웨어공학
  • ios
  • AVAudioSession
  • Git
  • 알고리즘
  • 티스토리챌린지
  • 백준
  • SwiftUI
  • 오블완
  • Optional
  • MVC
  • alamofire
  • constraint
  • 소프트웨어 공학

티스토리

hELLO · Designed By 정상우.
Dev.YoungKyu
[컴퓨터 구조] 시스템 버스(System Bus) 및 동작 방식
CS

[컴퓨터 구조] 시스템 버스(System Bus) 및 동작 방식

2024. 3. 12. 17:11

목차

  • 시스템 버스(System Bus) 란?
  • 제어 버스 (Contol Bus)
  • 주소 버스 (Address Bus)
  • 데이터 버스 (Data Bus)
  • CPU와 기억 장치간의 통신
  • CPU와 I/O 장치간의 통신
  • 전체 시스템 구성

시스템 버스(System Bus) 란?

  • 시스템 버스란 컴퓨터의 구성요소(CPU, 기억장치, I/O장치)간의 Data/신호 교환을 위한 통로입니다.
  • 제어 버스 / 주소 버스 / 데이터 버스 라는 하부 버스로 이루어집니다.

쉽게 이해하자면 시스템 버스라는 버스 터미널 안에 버스가 지나다니고, 데이터와 신호들이 각 버스를 타고 이동한다고 이해하면 쉽습니다.
 

 

제어 버스 (Control Bus)

  • 제어 버스는 CPU가 시스템 내의 각종 요소들의 동작을 제어하는데 필요한 신호들을 전달하는 통로입니다.
  • 제어 선의 개수는 CPU or 시스템 구성에 따라 다릅니다. 고정값X
  • 가장 기본적인 제어 신호들로는 기억장치 읽기/쓰기 신호와 I/O 읽기/쓰기 신호가 있습니다.
  • 읽기/쓰기 동작을 모두 수행하기 때문에 양방향 버스 입니다.

 

주소 버스 (Address Bus)

  • 주소 버스는 다른 장치로 주소 정보(기억장치 주소, I/O 장치 포트 번호)를 전달하는 통로입니다.
  • 주소 선의 개수 == 주소 버스의 폭(Width) == 최대 기억장치 용량 ( 2^주소 버스의 폭 )
  • 주소를 전달만 하기 때문에 단방향 버스 입니다.

 

데이터 버스 (Data Bus)

  • 데이터 버스는 CPU와 다른 장치 사이에서 실질적인 Data를 전달하는 통로입니다.
  • 데이터를 주고 받아야 하기 때문에 양방향 버스 입니다.
  • 데이터 버스의 폭(Width)가 한 번에 전송될 수 있는 Data의 크기(비트 수)를 결정합니다.
    • Word 크기, 레지스터 크기와 같다.
    • 만약 데이터 버스 크기가 32bit 라면, Data를 한 번에 32bit씩 읽을 수 있다.

 

CPU와 기억 장치간의 통신

 

 

  • CPU가 데이터를 기억장치의 특정 장소에 저장하거나 이미 저장되어 있는 내용을 읽는 동작을 액세스(Access)라고 합니다.
  • 이러한 액세스는 적재(Load), 저장(Store) 명령에 의해 수행됩니다.

적재(Load): 기억장치 읽기

  1. 주소 버스: 기억장치에서 읽을 Data가 저장된 주소 값 전달 ( CPU -> 기억장치 )
  2. 제어 버스: "기억장치 읽기 신호" 전달 ( CPU -> 기억장치 )
  3. 데이터 버스: 해당 기억장치에 저장된 Data 전달 ( 기억장치 -> CPU )

저장(Store): 기억장치 쓰기

  1. 주소 버스: Data를 저장 할 기억장치의 주소 값 전달 ( CPU -> 기억장치 )
  2. 제어 버스: "기억장치 쓰기 신호" 전달 ( CPU -> 기억장치 )
  3. 데이터 버스: 저장 할 Data 를 기억장치에 전달 ( CPU-> 기억장치 )

 

CPU와 I/O 장치간의 통신

  • 버스(주소, 데이터), 제어 신호(I/O 읽기/쓰기 신호)가 필요합니다.
  • 시스템 버스에서 I/O장치에 직접 연결하지 못하기 때문에 I/O 장치 제어기를 통해서 제어를 전달합니다.
  • 접속 경로: CPU <-> 시스템 버스 <-> I/O 장치 제어기 <-> I/O 장치

CPU가 키보드로부터 데이터를 읽어들이는 과정은 다음과 같습니다.

  1. 키보드의 어느 한 키가 눌러지면 그에 대응되는 8비트(ASCIII 코드 7비트 + 패리티 비트 1비트) 데이터가 제어기로 전송되어 데이터 레지스터에 저장됩니다.
  2. 동시에 상태 레지스터에 입력 준비 비트(In_RDY)가 세트됩니다.
  3. CPU는 데이터 입력을 원하는 시점이 되면 먼저 상태 레지스터를 읽어들이고 In_RDY 비트가 1로 세트되어 있는지 검사합니다.
  4. 만약 세트되어있다면 데이터 레지스터에서 데이터를 읽어오고, 그렇지 않다면 상태 레지스터의 내용을 검사하는 과정을 반복합니다.

 

전체 시스템 구성

 

저작자표시 (새창열림)

'CS' 카테고리의 다른 글

Heap이 Stack에 비해 느릴 수 밖에 없는 이유  (0) 2024.07.21
객체 지향 프로그래밍을 설계할 때는 SOLID 원칙을 지켜야 한다.  (0) 2024.04.12
[소프트웨어 공학] 블랙박스 테스트-1  (1) 2022.11.07
[소프트웨어 공학] JUnit  (0) 2022.10.10
[소프트웨어 공학] 소프트웨어 테스트 - 2  (1) 2022.10.03
    'CS' 카테고리의 다른 글
    • Heap이 Stack에 비해 느릴 수 밖에 없는 이유
    • 객체 지향 프로그래밍을 설계할 때는 SOLID 원칙을 지켜야 한다.
    • [소프트웨어 공학] 블랙박스 테스트-1
    • [소프트웨어 공학] JUnit
    Dev.YoungKyu
    Dev.YoungKyu
    iOS를 공부하고 있습니다

    티스토리툴바