본문 바로가기

전체 글80

13. 명령어 병렬 처리 기법 명령어 처리 과정 명령어 인출 - 명령어 해석 - 명령어 실행 - 결과 저장(같은 단계가 겹치지 않는다면 CPU는 각 단계를 동시에 실행할 수 있다.) 파이프라인 위험명령어 파이프라인이 성능 향상에 실패하는 경우데이터 위험 : 명령어 간 의존성에 의해 발생 (이전 명령어를 끝까지 실행해야만 비로소 실행 가능)제어 위험 : 프로그램 카운터의 갑작스러운 변화로 발생 (예측을 잘못해서 헛수고가 발생한 경우)구조적 위험 : 서로 다른 명령어가 같은 CPU 부품을 쓰려고 할 때 슈퍼스칼라 CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조이론적으로는 파이프라인 개수에 비례해서 처리 속도가 증가하겠지만?!파이프라인 위험도의 증가로 인해 반.드.시. 비례해서 증가하진 않는다.. 비순차적 명령어 처리aka. .. 2026. 2. 10.
12. 빠른 CPU를 위한 설계 기법 클럭 속도 : Hz 단위로 측정헤르츠 : 1초에 클럭이 반복되는 횟수 코어CPU 내에서 명령어를 실행하는 부품으로 여러 개 존재할 수 있음 멀티 코어여러 개의 코어를 갖고있는 CPU 스레드하드웨어적 스레드 : 하나의 코어가 동시에 처리하는 명령어 단위, 논리 프로세서 라고도 부름(ex. 1개의 코어가 1개의 명령어만 실행 = 1코어 1스레드, 2개의 코어가 각 2개씩 명령어 실행 = 2코어 4스레드)소프트웨어적 스레드 : 하나의 프로그램에서 독립적으로 실행되는 단위 멀티 스레드하나의 명령어를 실행하기 위해 꼭 필요한 레지스터들을 편의상 ‘레지스터 세트’라고 표기하고 이걸 여러개 가지고 있으면 멀티 스레드 2026. 2. 10.
한빛+ [온라인] 바이브 코딩 AI 프로젝트 실전 특강 후기 안녕하세요지난 주 목요일(1월 22일)에 한빛+에서 서적을 출판한 기념으로 진행한 바이브 코딩 특강을 들었습니다.그래서 특강 후기를 짧게나마 적어보고자 합니다. 0. 준비물 & 강연자 소개티켓값 : 10,000원을 출판하신 분은 조태호 교수님(https://www.jolab.ai/)입니다.현재 바이오분야 데이터 분석(딥러닝/머신러닝)을 연구하고 계시답니다. 1. 바이브 코딩이란?AI와 대화를 주고받으며 프로그램을 만드는 개발 방식오픈AI 공동 창업자 안드레이 카파시가 제안즉 코딩 경험이 없어도 아이디어만 있다면 AI가 코딩을 할 수 있게 도와주는 것을 말합니다. https://vibecodingshowcase.com/ Vibe Coding Showcase - Discover Amazing AI.. 2026. 1. 26.
AWSKRUG #Beginner 모임 - AWS Network 기초 이론과 Hands-on Lab 후기 안녕하세요.이번 주 수요일(1월 21일)에 AWSKRUG 비기너 모임에 다녀왔는데요,너무 좋은 경험이었어서 후기를 적어보고자 합니다. 신청 방법https://www.meetup.com/awskrug/events/312677101/?eventOrigin=notifications&notificationId=%3Cinbox%3E%21477722126-1768887463732 AWSKRUG #Beginner 모임 - AWS Network 기초 이론과 Hands-on Lab (1월 21일), 2026년 1월 21일 (수) 오후 7:00 | Meet[AWSKRUG 비기너 모임](https://www.awskr.org/groups/beginners/)은 AWS를 처음 (혹은 이제 막) 접하는 개발자, 엔지니어, 학.. 2026. 1. 23.
[프로그래머스] Java : 야근 지수(우선순위 큐) 이번 문제는 우선순위 큐를 사용하는게 포인트입니다.큐는 선입선출(FIFO)을 특징으로 갖는 자료구조입니다.우선순위 큐는 먼저 들어온 데이터가 아닌, 우선순위가 높은 데이터가 먼저 나가는 자료구조입니다. 0. 선언// 우선순위 오름차순Queue q = new PriorityQueue();// 우선순위 내림차순Queue q = new PriorityQueue(Collections.reverseOrder()); 1. 기본 메서드add(E e)큐에 데이터를 넣을 때 사용 만약 큐가 가득 차면, IllegalStateException 발생offer(E e)큐에 데이터를 넣을 때 사용 데이터를 넣지 못할 때는, false를 반환poll()첫 번째 값을 반환하고 제거큐가 비어있으면 null 반환remove()첫 번째.. 2026. 1. 20.
11. 명령어 사이클과 인터럽트 명령어 사이클프로그램 속 명령어들은 일정한 주기가 반복되면서 실행하는데 이 주기를 말함 인출 사이클 : 메모리에 정보를 CPU로 가져온다 실행 사이클 : 가져온 정보를 실행 = 일반적으로 ‘인출’ - ‘실행’ - ‘인출’ - ‘실행’ .. 을 반복 간접 사이클을 거치는 사이클이 존재하기도 한다. 정해진 흐름을 방해해, 인터럽트가 발생하기도 한다.When? CPU가 얼른 처리해야 할 다른 작업이 생겼을 때 발생 동기 인터럽트 When? CPU가 예기치 못한 상황을 접했을 때(ex. 디버깅, 데이터가 없을 때, 실행할 수 없는 명령어가 있을 때) 비동기 인터럽트When? 입출력장치 도중에 효율적으로 명령어를 처리하고자 발생(ex. 알림) 1. 인터럽트 요청 신호 2. 인터럽트 플래그: 0과.. 2026. 1. 19.
9. CPU의 내부 구성 ALU와 제어장치ALU는 레지스터로부터 피연산자를 받아들여서 제어 신호를 토대로 연산을 수행한다.부호 플래그 - 연산한 결과의 부호를 나타낸다제로 플래그 - 연산 결과가 0인지 여부를 나타낸다캐리 플래그 - 연산 결과 올림수나 빌림수가 발생했는지를 나타낸다오버플로우 플래그 - 오버플로우가 발생했는지를 나타낸다 클럭컴퓨터의 모든 부품을 일사분란하게 움직일 수 있게 하는 시간 단위 레지스터레지스터는 CPU 내부의 작은 임시저장장치프로그램 속 명령어&데이터는 실행 전후로 레지스터가 동작한다.프로그램 카운터 : 메모리에서 가져올 명령어의 주소명령어 레지스터 : 해석할 명령어메모리 주소 레지스터 : 메모리의 주소메모리 버퍼 레지스터 : 메모리와 주고받을 값 (데이터와 명령어)플래그 레지스터 : 연산 결과 또는 C.. 2026. 1. 19.
7. 명령어의 구조와 주소 지정 방식 명령어 = 연산 코드 + 오퍼랜드 오퍼랜드연산에 사용될 데이터 or 연산에 사용될 데이터가 저장된 위치없을 수도(0주소), 여러 개(2주소..) 일 수도 있다. 대표적인 연산 코드의 종류MOVE : 데이터를 옮겨라POP : 스택에 데이터를 저장하라 명령어 주소 지정 방식연산에 사용할 데이터가 저장된 위치를 찾는 방식즉시 주소 지정 방식 : 오퍼랜드 필드에 데이터를 직접 명시직접 주소 지정 방식 : 오퍼랜드 필드에 유효 주소 직접적으로 명시간접 주소 지정 방식 : 오퍼랜드 필드에 유효 주소의 주소를 명시레지스터 주소 지정 방식 : 연산에 사용할 데이터가 저장된 레지스터 명시레지스터 간접 주소 지정 방식 : 연산에 사용할 데이터를 메모리에 저장, 그 레지스터를 명시 2026. 1. 19.