※블로그 내용은 저 '개인'의 기준으로 더 필요하다고 생각되는, 또는 한번 더 짚어보는 의미로 직접 필기한 것입니다. 수희 혼자 볼라고 쓴 블로그
★어렵다.
플립플롭이란? 메모리! (스위치를 껐다 키면서 전기가 저장하는 느낌.)
데이터를 저장하는 조합 논리회로.
두번째 스위치를 킨후 끄면?
-첫번째 스위치를 키면 불이 켜지고, 스위치를 꺼도 불은 켜진채로 지속
-두번째 스위치 끄면 불이 꺼지고 스위치를 꺼도 불은 꺼진채로 지속
스위치를 키고 끄고 저장할수 있다.
-불이 켜져 있다: 첫번째 스위치가 켜졌었다.
-불이 꺼져있다. 두번째 스위치가 꺼졌었다.
전기를 전에 켰다는걸 회로가 기억.
- RS 플립플롭(R-S(Reset-Set) flip-flop
- Hold That Bit있는것을 Level-triggered flip-flop이라 함.
클럭을 지원.- D-type flip-flop : R/S두인풋을 하나의 인풋으로 바꿔봄
- Level-triggered D-type flip-flop
D는 data를 의미.Level-triggered는 홀드댓빗이 1일때만 data를 저장한다는 의미.- RS 플립플롭에서 R/S둘다 1,0일 경우를 피하도록 설계한 조합논리회로.
★이 논리회로를 기본으로 메모리가 구성됐다. 1비트 저장할때 최소부품을 설명
Level-triggered D-type flip-flop는 1 bit의 latch라고 이야기함
2에 8승 8비트. 래치를 8개 연결.
8-to-1 seletor
8비트 데이터에서 특정 비트 값만 출력하기
하나의 백열 전구로 8개 각 비트의
어디에서 읽어오기. 주소라고 함. 특정 주소를 가르킴.
사용해서 8개의 1비트래치 중에 하나의 데이터 출력 신호를 선택 가능.
3-to-8 decoder
8개 출력중, V 스위치로 단 하나의 출력 이외에는 O
write가 1, V 스위치로 특정 출력 선정, data in의 값이 특정 래치에 쓰여짐
8공간중에 한공간만 쓸수 있게 함.
온전한 8 비트래치 회로
3-to-8 decoder와 8-to-1 seletor로 구성(이게 바로★ address 주소임)
s0,s1,s2가 decoder와 selector에 동일하게 적용(데이터 읽고 쓸수있는 주소)
write가 1이면 address에 data in값이 씌여짐
data out은 항상 address에 해당하는 값을 출력
★8개 중에 특정 주소에 데이터 읽고 쓰기 가능. =온전함
RAM(random access memory) 메모리.
위에서 말하는 온전한 8 비트래치 회로가 ram이다.
3-to-8 decoder와 8-to-1 seletor로 구성
3 주소가 있으면 8개중 하나의 비트를 선택해서 쓰거나 읽을 수 있다.
8x1 ram:
8개 비트 중 1개의 특정 비트를 쓰고 읽을 수 있는 메모리
특징1 - 메모리: 데이터를 저장할 수 있음
특징2 - read/write :특정 공간에 새로운 데이터 저장, 읽기 가능
특징3 - random accessL address지정을 통해 특정 공간 값 접근 가능
반면 어떤 메모리는 순차 접근만 가능
예로 100주소 읽기 위해 99를 읽어야되;
이런걸 계속 이어 붙이면 m*n ram arry을 만들 수 있다.
많은 데이터를 저장하는 ram arry. 8x1 램을 여러개 연결하고 여러개의 select로 decoder/seletor를 구성하면 많은 데이터를 읽고 저장 가능
참고)
1024 킬로바이트=1 메가바이트
1024 메가바이트= 1기가 바이트
킬로비트/메가비트는 네트워크에서 많이 사용
실제로 어떡해 컴터에서 덧셈 되는지. 덧셈을 계산 해보자
-클리어를 1로 만들어 기존 값을 삭제
-스위치로 a데이터를 넣고 add를 누름
b는현재 아무 값이 없는 상태
결국 a의 데이터는 b에 들어감
-스위치로 다시 다른 데이터를 a에 넣고 add 누름 =☆결국 B=A+B
메모리 계층 - 컴터 구조 이해
프로그램 카운터(PC) - 16비트 카운터: 1씩 증가하는 조합논리회로
여러숫자를 더하고 싶다면? 클럭이 0과 1로 변할때마다 pc값이 증가
automation은 000h주소부터 데이터 저장되어 있음.
프로그래밍: data & code
각 주소에 대응해서 load, add, store를 의미하는 값을 만들어야함
ram을 분리하여, 명령을 의미하는 값을 순차적으로 넣으면 코드를 실행가능
h는 hex(16진수)를 의미
명령 숫자: instruction code, operation code, 또는 opcode라고 함
load와 store 명령
load: 2-to-1 selector로 data를 add하지 않고 바로 8비트 래치에 넣음
store: 8비트 래치의 output을 바로 64k x8 ram에 저장(쓰기 스위치를 1로 만듬)
우리는 고급언어로 쓰는게 코딩임.
instruction set와 코드_ 소프트웨어:코드 + 데이터
소프트웨어 엔지니어: 코드를 작성하는 사람
머신 language: cpu는 instruction code를 만들어놓고 제공함.
컴파일: 프로그래밍 언어로 작성된 프로그램은 컴파일러 통해 cpu가 제공하는
instruction code를 기반으로 변환 됨.
대표적인 언어: c언어, java 언어 등
instruction code를 약자로 만들기라도 하면
예시 = LOD A, [1003h]
LOD는 10h의 instruction code를 나타내는 약자
a는 Accumulator를 나타내는 약자,
1003h 주소에 있는 데이터를 로드해서 Accumulator에 넣어라란 뜻.
begin: LOD A,[1005h]- 코드 재작성시 주소 변경 되므로 이름 붙이기.
고급 언어에서는 함수와 변수에 이름을 붙이는 작업이 됨.
폰노이만 구조=현 컴퓨터 구조
컴퓨터의 cpu기본 구조
cpu성능을 높이는 기법- 파이프 라인
하나의 작업에 필요한 일을 세부적으로 나누어서 동시에 다른 세부작업을 실행하는 기법
cpu단계 2가지
Fetch stage(instruction Fetch/Decode) 인출. 해석하는 단계 하나로 묶
Execution stage(instruction Execution) 실행하는 단계
더 줄이려면 단계를 세분화 하면 됨
- 명령어 인출(IF : instruction Fetch)
- 명령어 해독(ID : instruction Decode):인출된 명령어 해석
- 오퍼랜드 인출(OF : Operand Fetch): 메모리에서 데이터 인출
- 명령어 실행 (EX : Execute)
- 실행 결과 저장(SR : Store)
이런 5단계말고 16단계도 있다. 5단계는 하나의 명령어를 실행시 5사이클이 걸린다
cisc(Complex instruction set computer):
하나의 명령어 실행으로 가능한 한 많은 작업을 수행(복합 명령어)
복합 명령어 수행을 위해 cpu 로직 회로 복잡도 증가
하나의 명령어 실행 시간 증가
risc(Reduced instruction set computer):
간단한 조합해서 실행하면 더 효율적이지 않음?
복잡도는 적지만 코드가 길어질 수 있다.
cisc의 특성
명령어의 포맷이나 길이에 관한 규칙이 없음
하나 이상의 사이클로 명령어(세부 작업) 실행
전체 명령이 얼마나 걸릴지 시간 예측이 어려움
risc의 특성
명령어의 포멧과 길이 고정
하나의 사이클로 명령어(세부 작업) 실행
전체 명령 시간 예측이 가능
cisc / risc cpu
대표적인 cisc cpu는 인텔 cpu
대표적인 risc cpu는 ARM (스마트폰, 임베디드, ioT기기)
오피코드가 달라서 컴파일 다르게 해야한다.
메모리
비싸서 성능을 높이기 위한 전략은 비싼 메모리는 cpu바로 옆에, 단 작게
느린 메모리는 먼곳에, 단 크게
레지스터 , ram , ssd
Register: cpu안에서 데이터 보관
SRAM: L1,2,3 캐쉬. 최대한 가장 많이 사용하는 메모리의 데이터를 넣어 놓아서 , 메모리까지 접근하지 않고 cpu가 가져다 쓸수있게함
DRAM: 메모리
SSD/ HDD(하드디스크): 컴터 꺼도 데이터 보전
DMA(Direct Memory Access)
cpu가 캐쉬까지는 데이터를 가져오는데 관여하지만 (instruction Fetch)
메모리, SSD에서 데이터를 가져오는데까지 관여하면 cpu 활용도가 낮아진다
DMA라고 만들어서 메모리, SSD에서 데이터를 관리하면 cpu는 이 시간을 명령 실행에 더 쓸 수 있다.
메모리 왔다갔다하면 시간 오래 걸려서 효율 떨어짐.cpu한테 다 맡기면 효율 안좋아.
DMA에서 대신 가져오면 효율 굿.
io Devices
인풋/ 아웃풋 디바이스: CDROM,Mouse,키보드,프린터,★Network Card
Bus를 통해 io 디바이스에 데이터를 송수신
향후 cs지식 로드맵
필수 cs 기본 지식 항목
운영체제, 네트워크
자료구조/알고리즘 (코테 준비를 통해 별도 정리)
데이터베이스는 실무 프로그램 사용법을 익히면 됨