일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 반도체 엔지니어
- neople
- 보안
- 아두이노
- 메타마스크
- MuchineRunning
- 유니티
- 인터럽트
- 던전앤파이터
- 유니티에러
- 컴퓨터구조
- 네트워크
- memory
- 레지스터
- 네오플
- 이더리움
- 면접
- 에러
- 네트워크보안
- 메모리
- 아두이노함수
- 게임기획
- MLAgent
- 머신러닝
- 반도체 취업
- 던파
- 암호화
- Unity
- 아두이노우노
- 반도체
- Today
- Total
Dreaming Deve1oper
컴퓨터 구성품의 연결 (Day 1) 본문
Memory Read
- CPU / BUS / Cache / Main Memory 총 개의 Block
- CPU에서 Main Memory에 있는 데이터를 읽기 위해선 주소가 필요하다. ( Address Bus를 통해 주소 이동)
- Control Bus를 통해 Mmory를 읽는 것인지 쓰는 것인지 (read / write)에 대한 정보를 CPU가 보내주어야한다.
- Main Memory로 정보들이 바로 전송되는 것이 아니라 Cache로 먼저 전송된다.
※ Cache: CPU가 먼저 읽을것 같은 데이터가 저장되어 있다.
- 저장되어 있는 경우: Data Bus를 통해 CPU로 전송해준다.
- 저장되어 있지 않는 경우: Cache에 전송된 신호를 다시 Main Memory로 전송해 데이터를 찾은 후 Data Bus를 통해 CPU로 전송해준다.
Address Bus
- 주소를 전송하는 신호 선들의 집합.
- 신호 선들의 갯수에 따라 CPU와 접속할 수 있는 최대 메모리 용량이 결정된다.
└ Address Bus의 Bit 수: 16Bits라면 최대 2^16 = 64 * 2^10 = 64K개의 Memory Address 지정 가능.
Address Bus / Data Bus: 마름모 안에 n개의 Bit 전송
Read Enable: 1개의 Bit 전송 ( 0 > 1 > 0)
Memory Write
- CPU에서 Main Memory로 주소를 보낸다. (Memory의 어느 위치에 저장할 것인지 지정하기 위함)
- Write를 하기 위해 CPU에서 연산한 데이터를 Main Memory로 보낸다. (Data Bus에 메모리가 적재되어야 함)
- CPU가 Main Memory에게 Write Enable 신호를 동시에 전송해준다. (메모리를 사용하는데 그에 필요한 데이터는 Data Bus를 통해 전송되고 있으며 그것을 어느곳에 사용할지는 Address Bus로 전송되는 주소를 통해 알 수 있다)
Data Bus
- Data를 전송하기 위한 신호 선들의 집합.
- Data Bus 폭이 32Bits라면 CPU와 Memory간 Data 전송은 한번에 32Bits씩 가능하다.
└ Data Bus의 라인 하나하나가 32개 있다. 병렬로 32개를 한번에 보낼 수 있다.
Control Bus
- System 내의 각종 요소들의 동작을 제어하기 위한 신호 선들의 집합 (Memory Read / Write 신호)
동시에 전송되어야함
끝나는 지점은 동일하지만, 작업이 끝난 후 모든 신호를 Disable 시킨다.
I/O Read
I/O Device Controller
- CPU로부터 I/O 명령을 받아서, 해당 I/O 장치를 제어하고 Data를 이동함으로써 명령을 수행하는 전자회로 장치 (Keyboard Controller, Printer Controller 등...)
- 서로 데이터를 전송하고 받기위한 중간의 대리인 역할을 수행한다.
- Status Register (상태 레지스터): I/O 장치의 현재 상태를 나타내는 Bit들을 저장한 레지스터. 준비상태 (RDY) Bits, Data 전송확인 (ACK) Bits 등
- Data Register: CPU와 I/O 장치 간에 이동되는 Data를 일시적으로 저장하는 레지스터.
- I/O controller는 System Bus와 직접적으로 연결되어 있지만 I/O는 중간에 I/O Controller를 두고 연결되어 있다.
- I/O Read를 위해선 주소가 필요하다. > Address Bus를 통해 저장장치(SSD, HDD...)의 어떤 부분의 데이터를 가지고올지 알 수 있다.
- 동시에 Control Bus를 통해 데이터의 Read/Write 여부를 알 수 있다.
I/O Controller가 위의 과정을 통해 어디에 있는 데이터를 받아올지 결정한 뒤 I/O 혹은 SSD에 신호를 보냄 > I/O, SSD에서 데이터를 가져와 Data Register에 저장함 > 저장될때마다 Status Register가 0값을 1로 바꿈 > CPU는 Status Register 값이 1(In_RDY 비트)이 되는 순간을 계속 관찰 > 1이된 순간 I/O Controller에 있는 Data Register의 데이터를 Data Bus를 통해 가지고옴
System Bus의 공유
Bus Arbiration
2개 이상의 Device(Memory, I/O 혹은 SSD)가 System Bus에 사용을 요구할 경우 우선권을 누구에게 할당하는지에 대한 방식
1. Parallel Arbitration (PA) [병럴중재방식]
- Centralized PA
- Decentralized PA
2. Serial Arbitration/Daisy Chain (SA) [직렬중재방식]
- Centralized SA
- Decentralized SA
3. Polling [시간중재방식]
- H/W Polling
- S/W Poliing
I/O Device 접속 방식의 종류
ex) 본인이 손님 맞이 전 집에서 설거지를 하고 있는 상황.
Programmed I/O: 설거지를 하는 중간중간 손님이 왔는지 직접 나가 확인하는 방식.
- Memory Mapped I/O
- Isolated I/O
- CPU에게 큰 부담이가는 방식.
- Micro Processor로 코딩할 경우 많이 사용하는 방식.
Interrupt Driven I/O: 초인종 소리를 통해 설거지를 하고 있더라도 손님이 왔음을 알 수 있음.
- Multiple Interrupt
- Daisy Chain
- S/W Polling
- 외부의 데이터가 들어올 경우 CPU에 Controll Bus를 통해 알려줌. (신호가 계속 0이였다가 1로 바뀌면 데이터가 들어옴을 알고 Data Register로 가서 데이터를 CPU로 가지고옴)
- 대부분의 CPU가 해당 방식을 사용함.
I/O with DMA: 대리인 한명을 두고 손님이 올 경우 나에게 알려줌.
- DMA I
- DMA II
- DMA with I/O Bus
- DMA with I/O Processor
- CPU가 전혀 관여하지 않고 DMA Processor라는 대리인이 모든일을 처리함.
Read한 프로그램과 데이터의 처리하고 Write 하는가
High Level Language Program
- z = X + Y
- X와 Y에 있는 값을 더해 Z에 저장.
Assembly Program
- Assembly Instruction: 항상 목적지는 앞(A), 출발지는 뒤(X)이다.
- LOAD: 메모리에 있는 데이터를 CPU에 있는 Register로 가져옴.
- ADD: 메모리에 저장되어있는 Y의 값을 A로 가져오는데 기존에 있던 A값을 더함.
- STOR: A에 있는 값을 Z(메모리의 위치)로 STOR한다.
컴퓨터의 전체적인 구성
'컴퓨터 구조' 카테고리의 다른 글
로직 연산 (Day 2) (0) | 2022.03.19 |
---|---|
ALU 아키텍처 / Integer 표현 (Day 2) (0) | 2022.03.19 |
반도체와 시스템의 발전 (Day 1) (0) | 2022.03.13 |
메인 메모리, SSD, I/O의 구성 (Day 1) (0) | 2022.03.12 |
CPU의 구조/구성 (Day 1) (0) | 2022.03.02 |