본문 바로가기

분류 전체보기

(81)
DI - 의존관계 주입 이번 포스팅에서는 스프링에서 중요한 DI의 개념에 대해서 적어보도록 하겠다. DI - 의존관계 주입 DI(Dependency Injection)을 번역하면 의존관계 주입 혹은 의존성 주입으로 부른다. 허나, 의존이 하나의 관계를 띄고 있고, 그 관계가 상당히 중요한 역할을 하므로 의존관계라고 부르도록 하겠다. 먼저,의존관계 주입을 알기 위해서는 의존관계가 무엇인지 알아봐야 한다. ■ 의존관계란? A는 B와 의존관계다. 라고 말한다면, 의존 대상 B가 변할 때, 그것이 A에 영향을 미친다. 예를 들어, 건축가가 있다고 치자. 그 건축가는 설계도를 보며 건물을 짓는다. 허나, 중간에 설계도가 변경이 되면 건축가는 다른 모양으로 건물을 짓게 될것이다. 설계도의 변화가 건축가에게 영향을 미쳤다. 이를 통해 건축..
다형성과 좋은 객체 지향 설계의 5가지 원칙(SOLID) 클린코드로 유명한 로버트 마틴이 작성해둔 좋은 객체 지향 설계의 5가지 원칙(SOLID 원칙)에 대해서 정리해보려 한다. 그전에 앞서, 먼저 가장 중요한 다형성의 개념에 대해서 짚고 넘어가겠다. 💻 다형성 역할과 구현의 측면에서 다형성을 설명할 수 있다. 객체를 설계할 때, 인터페이스를 만들고, 그 인터페이스를 상속하는 클래스들을 만들자. 이렇게 되면, 우리는 클래스를 잘 알지 못하더라도, 인터페이스의 역할만 알아도 모든 클래스를 사용할 수 있게 된다. 예를 들어, Car라는 인터페이스가 있고, 이것을 genesis,k5등의 여러 클래스가 상속하고 있다고 치자. 이렇게 되면, 클라이언트는 Car라는 인터페이스를 알면, 모든 클래스를 사용하는 법을 아는 것이다. 이렇게 우리는 역할을 의미하는 인터페이스를 ..
[디지털 설계 및 실험] Verilog vol10. Timing and Delays Delay는 여러가지 종류가 있다. 💻 Distributed Delay 먼저, Distributed Delay는 element마다 딜레이를 주는 방식이다. 여기서 element는 gate를 의미한다. Delay값들은 회로의 element 각각에 할당되어지며, input이 달라지면, 결과값은 delay후 변화하게 된다. 세세하게 딜레이를 줄 수 있지만, 속도가 느리다는 단점이 존재한다. 💻 Lumped Delay Lumped Delay는 모듈마다 딜레이를 주는 방식이다. 앞서, Distributed Delay는 element마다 딜레이를 주었지만, 이것은 마지막 최종출력단 앞에 있는 gate에 누적되는 딜레이를 뭉탱이로 준다. 그림을 보면 바로 감이 올것이다. 속도가 빠르다는 장점이 존재한다. 💻 Pin-..
[컴퓨터 구조] Control Hazard Pipeline Hazard에는 3가지 종류가 있다고 했다. Structural Hazard, Data Hazard, 그리고, Cotrol Hazard 오늘은 Control Hazard에 대해서 알아보자. 💻 Control Hazard Control Hazard는 branch instruction 다음 instruction이 무엇이 올지 EX stage때까지 모를때 발생한다. beq가 branch 될수도 안 될수도 있다. 만약에, Branch가 된다면 우리가 Fetch 해온 Instruction 들이 모두 쓸모 없게 되버리는 것이다. 이것은 성능 측면에서 매우 손해이다. 이것에 대한 여러가지 해결방법이 있는데, 가장 쉬운 것은 branch의 조건을 만족시키는 지 안시키는지 알아낼 때까지 즉,ALU로 연산..
[컴퓨터 구조] Building Datapath(2) 저번 포스팅에서는 공통으로 쓰이는 Datapath와 명령어에 따라서 쓰이는 DataPath를 보았다. 이번에는, 그것들을 하나의 Datapath로 만들어보자. 💻 Single Datapath - without control 이전 포스팅에서 보여줬던 DataPath를 모두 합쳐 single DataPath로 만든 모습이다. MUX라는 DataPath는 멀티플렉서로, Input을 선택적으로 넣어주기 위해 달렸다. 이렇게 완성된 Single Datapath는 왠만한 instruction을 모두 수행할 수 있다. 💻 Single Datapath - with control control 신호를 추가해준 것이다. Instruction의 address 는 각각 자기 위치를 찾아서 레지스터파일, IMMGen 의 Inp..
[컴퓨터 구조] Building datapath(1) Chapter 4로 넘어오면서 디지털 설계 및 실험에서 배운 요소들을 써먹는 부분들이 많았다. 그런부분은 넘어가고 새로 배우는 내용들에 대해서 초점을 둬보자. datapath를 구성해보는데 흐름을 따라서 가보자. 💻 Datapath Datapath란 CPU에서 데이터와 주소를 처리하는 모든 요소들을 말한다. 레지스터, ALU,Multiplexer,메모리 등이 이에 해당한다. 이 Datapath들이 하나로 통합되어 우리가 명령어를 실행할 수 있게 되는 프로세서의 Datapath를 점점 완성해 나갈 것이다. 💻Feteching the instruction 제일 첫단계인 Instruction Fetch를 살펴보자. Instruction Fetch를 하는 요소들에 대해서 알아보자. PC : 이전에 배웠지만 실행..
[컴퓨터 구조] Associative Cache 예전에 Direct- mapped Cache에 대해서 설명하였다. 그러면서 잠깐 Set Associative Cache에 대해서 언급했는데 오늘은 Cache의 종류에 대해서 알아보자. 💻 Type of Cache 캐시의 종류는 Direct-mapped cache, Fully associative cache, Set associative cache 3가지로 분류 할 수 있다. Direct- mapped cache는 이전에 작성한 포스트를 참고하면 좋을 것 같다. Set associative cache는 일반 캐시처럼 Tag, Data ,valid 모두 다있다. 다른점은 index가 Set으로 묶여있다는 점이다. 그리고, 데이타는 index에 해당하는 Set 중 아무 곳이나 들어 갈 수 있다. 그 Set 안..
[컴퓨터 구조] Cache Performance 이번 포스팅에서는 Cache의 성능을 측정해보자. 💻Cache Performance 캐시의 성능을 측정할 때, Hit 일 때, Miss일 때로 크게 두 분류로 볼 수 있다. Hit 일 때는 Hit time이고, Miss 일때는 Miss penalty이다. 따라서, CPU time을 계산하는 과정은 위와 같이 표현되어진다. 여기서 total clock cycled = CPU cycles + Memory stall cycles로 표현되어 질 수 있다. CPU cycles는 CPU가 실행하는 시간이고 Memory stall cycles는 DATA에 접근하는 시간을 의미한다. 여기서, Memory stall cycle에 대해서 더 알아보도록 하자. CPU가 Cache에 요청을 하였는데 해당 데이터가 없을때, M..