본문 바로가기

전체 글111

[혼공컴운] 빠른 CPU를 위한 설계 기법 어떻게 하면 더 빠른 CPU를 만들 수 있을까? 클럭 속도 빠르게 하기 클럭: 컴퓨터의 모든 부품을 움직일 수 있게 하는 시간 단위 클럭 신호가 더 빨라진다는 것은 그만큼 빠르게 CPU의 명령어 사이클이 빠르게 반복된다는 것 클럭의 속도는 헤르츠(Hz) 단위로 측정됨 순간적으로 클럭 속도를 더 끌어올리는 오버클러킹(overclocking)이 있긴 하지만 부품에 무리를 줄 수 있음 코어와 멀티코어 오늘날의 CPU에는 1개의 코어, 즉 ALU, 제어장치, 레지스터들이 있는 것이 아님. (코어란 CPU 안에서 명령어를 실행하는 부품 세트 정도라고 생각하면 좋을듯) 복수 개의 코어를 가지고 있는 CPU인 멀티코어 CPU가 사용되고 있음. 이 멀티코어 CPU는 여러 개의 코어를 가진 프로세서라는 의미에서 멀티코어.. 2023. 4. 4.
3. 크롤링 코드에 멀티프로세싱 적용하기 (Feat. AWS Lambda & Pool) 오늘의 목표는 크롤링 코드에 멀티프로세싱 적용하기! 기존 코드에 멀티프로세싱을 굳이 적용하는 이유는 AWS Lambda의 타임아웃 리밋이 15분이기 때문. 19000개의 네이버 지하철 시간표 홈페이지에 접속하고 정보를 크롤링, 특정 형식으로 자료를 정리해야 하기 때문에 15분은 굉장히 빠듯한 시간이다. 실제로 Lambda에서 900초 이후 Timeout 에러가 나면서 테스트 실패가 뜨는 현상이 있었음. 어떻게 하면 크롤링 코드를 더 개선할 수 있을까 고민해보았음. 첫번째 방법은 '100에서 20000까지 한 번에 돌리는 것이 아니라 100~10000 / 10001~20000까지 따로 돌려서 결과를 append한다'. 하지만 이것은 도메인? 특성상 하기 힘들었음. 어느 번호에 몇 호선의 어떤 역이 있는지 .. 2023. 4. 3.
1. 크롤링 코드 개선하기 내가 아주 기본적인 토대를 짜고, 그 위에 팀원 분이 아주 멋지게 코드를 짜주어 여차저차해서 크롤링 코드의 초안이 나름대로 완성되었다. 이 코드를 개선하는 과정을 운 좋게 내가 담당하게 되었는데, 그 과정에서 굉장히 많은 고민을 해서 기록을 남긴다. 오류를 해결하기 위해 아이디어를 생각해내는 순간들, 어떻게 하면 더 효율적으로, 더 외부환경에 강건한 크롤러를 만들 수 있을까에 대한 고민을 하는 과정이 너무나 재미있었다. 1. 전체적인 구조 개선 1) 시간표에 접근하는 전략 수정하기: 네이버의 역코드를 알아낼 수 있는 크롤러 별도 제작 (1) 문제 인식 개선 전 코드의 기본 흐름은 아래와 같다 (이미지도 첨부한다) 1) 네이버 모바일 지도에 검색 쿼리를 날린다 2) 가장 위에 있는 검색 결과를 클릭한다 3.. 2023. 3. 31.
[혼공컴운] 명령어 사이클과 인터럽트 명령어 사이클: CPU가 하나의 명령어를 처리하는 하나의 정형화된 흐름 인출 사이클(Fetch Cycle): 메모리에 있는 명령어를 CPU로 불러오는 단계 실행 사이클(Execute Cycle): CPU로 가져온 명령어를 실행하는 단계 간접 사이클(Indirect Cycle): 간접 주소 지정 방식 등으로 인해 메모리에서 명령어를 가져왔음에도 불구하고 한 번 더 메모리 접근이 필요한 상황 인출 사이클과 실행 사이클 사이에서 발생 인터럽트 사이클(Interrupt Cycle): 실행 사이클이 끝난 후 발생하는 사이클 인터럽트 신호가 들어왔는지 아닌지 판단하고, 발생시 인터럽트 처리 인터럽트: CPU의 정상적인 작업을 방해하는 신호 인터럽트의 종류 동기 인터럽트(예외): CPU에 의해 발생하는 인터럽트. 어.. 2023. 3. 31.