검색결과 리스트
분류 전체보기에 해당되는 글 83건
- 2013.01.25 Cache Optimization
- 2012.12.13 verilog FSM 그림보충
- 2012.12.12 verilog blocking nonblocking
- 2012.12.12 2012. 12. 21
- 2012.12.12 matlab index
- 2012.12.12 matlab_classdef
- 2012.12.12 C++ 생성자
- 2012.12.12 matlab 관련 강의 3
- 2012.12.11 labview_2
- 2012.12.11 mearly machine diagram
글
Cache Optimization
First of all, cache miss 의 종류
1. Compulsory(강제 미스) : The very first access to a block cannot be in the cache.
2. Capacity(용량 미스) : Cache cannot contain all block which is neccessary during the execution
3. Conflict(충돌 미스) : Because of the placement strategy.
Cache를 optimization 시키는 3가지 : hit를 많이 시키자, hit 시켰을때 시간이 많이 걸리지 않게 하자, 설사 miss가 되었더라도 miss penalty를 줄여보자. 입니다
Basic Optimization
1. Reducing hit time (first-level cache)
1) Giving reading priority over Write : Write-back, Write-through cache, write buffer
2) Avoiding address transition during cache indexing : Virtual index physical tag cache
2. Reducing miss penalty (below the first-level cache)
1) Multilevel Cache : Don't need to access memory (First-level cache should be small for the fast clock cycle time)
3. Reducing Miss Rate
1) Larger block size : spatial locality, compulsory misses↓, miss penalty↑, capacity and conflict misses ↑
2) Bigger cache : Capacity miss ↓, hit time ↑, clock speed ↓
3) Higher associativity : Conflict miss ↓, hit time ↑
Advanced cache optimization
1. Reducing hit time (first-level cache)
1) small and simple
small
- many index, clock speed(propagation) ↓ => hit time↓
- small cache takes less time to index
simple
- high associative => => hit time↓
- direct mapped cache can overlap tag check with data transmission since no choice
2) way predition : each cache block has block predictor bits
=> How to combine fast hit time of direct-mapped with lower conflict misses of 2-way set associative cache (direct cache can overlap tag check and data transmission, high associative cache can reduce miss rate)
=> 1. multiplexer set early to select desired block; only 1 tag comparison
3) Trace cache : A trace cache stores instructions either after they have been decoded, or as they are retired. Trace path contains only instruction which are actually used. This allows the instruction fetch unit to fetch several basic blocks, without having to worry about branches in the execution flow.
2. Increasing cache bandwidth(cache structure)
1) pipelined cache : yeah "Miss under miss", "hit under multiple miss".
2) multibanked cache : can support simultaneous accesses, mapping that works well is sequential interleaving
3) nonblocking cache : hit under miss(until WAW or WAR hazard is occured)
3. Reducing miss penalty
1) Critical word first, Early restart : Request critical word first and as soon as the requested word of the block is arrived, send it to CPU (beneficial only when one block size is large)
2) Merging write buffer : merge because multi-word writes is more efficient
usually multiword writes are faseter than writes performed on word at a time
figure: four stores to sequential addresses would fill the buffer at one word per entry, even though theses four words when merged exactly fit within a single entry of the write buffer
4. Reducing miss rate
1) Compiler optimization : Reorder the procedure in memory so as to reduce conflict misses
- Merging arrays
- Loop interchange
- Loop fusion
- Blocking
5. Parellelism
1) Hardware prefetch : hardware stream buffer based on past cache access pattern
2) Compiler prefetch : special instruction (pref 0, 20($4)) is inserted into the program by compiler to bring the desired block into the L1 Dcache
'Learning stuff' 카테고리의 다른 글
SIMD (0) | 2013.01.29 |
---|---|
verilog $setup, $hold, $width (0) | 2013.01.29 |
matlab index (0) | 2012.12.12 |
matlab_classdef (0) | 2012.12.12 |
C++ 생성자 (0) | 2012.12.12 |
설정
트랙백
댓글
글
verilog FSM 그림보충
Verilog 그림을 실컷 그렸더니....
더 좋은 그림이 있었다 ㅋㅋㅋ
걍 올려야지
설정
트랙백
댓글
글
글
글
matlab index
matlab index에 대해서....
1. 콜론의 사용법
아 겨울이라서 춥네...... 콜론콜론..... 아
훌쩍..... 내홈피는 블로근가?? 아몰라 여튼 아무도 안들어올거기 때문에 쓰레기 개드립 막 버려야지
:은 a:b 와 같이 쓰면 a~b 라는 뜻이다 그냥 간단히 예만 쓰고 패쓰
콜론만 단독으로 쓰일때는 all 이라는 의미가 있다
2. find
A값중 20보다 큰 인자의 인덱스를 찾아보자
행렬로 찾아보자
처음 2개만 찾아보자
3. linear 인덱스와 subscripts
출처 : http://iamaman.tistory.com/115,
아 물론 접근하는건 () 써서 하는거 알고있지용
그리고 저번에 궁금했던 logical index
간단하게 예만 들어도 알듯...
말 그대로 logical 하게 판단을 하여서 그 index를 가지고 있는듯......
그러니까 logical_index를 나타내도 라고 위에 같이 치면 pointer를 가지고 있는데는 1로 나타내주고
실제로는 각각 1로 표시된 좌표를 가지고 있는듯 하다.
즉 위에서는 logical_index 가
linear index : 3, 9, 10
subscripts index : (3,1), (1,3) , (2,3)
을 가지고 있는거죠
❉ linear index는 첫번째 열부터 세더라
누가 그러던데 MATLAB 은 기본적으로 행벡터 즉 열을 기준으로 연산하는 특징이 있다고 하더라
'Learning stuff' 카테고리의 다른 글
verilog $setup, $hold, $width (0) | 2013.01.29 |
---|---|
Cache Optimization (0) | 2013.01.25 |
matlab_classdef (0) | 2012.12.12 |
C++ 생성자 (0) | 2012.12.12 |
matlab 관련 강의 (3) | 2012.12.12 |
설정
트랙백
댓글
글
matlab_classdef
classdef
⦿Properties
- property definition block
- it can contain many properties
- ex)
properties
R_sw1 = 0.003 %0.5; % Turn-on resistance of the top MOSFET (ohm)
R_sw2 = 0.003 %10; % Turn-on resistance of the bottom MOSFET (ohm)
R_sw3 = 0.003 %0.5; % Turn-on resistance of the top MOSFET (ohm)
R_sw4 = 0.003 %2; % Turn-on resistance of the bottom MOSFET (ohm)
R_l = 0.0027 %0.083; % The ESR of the inductor L (ohm) Coiltronics CTX20-1-52M-R
R_c = 0.0765%0.05;
I_ctrl = 0.003 %2e-3;
f_s = 200000 %2e5; % Switching frequency (Hz)
Q_sw1 = 0.000000155 %5e-7; % Gate charges of the top MOSFET (F) (?)
Q_sw2 = 0.000000155 %5e-8; % Gate charges of the bottom MOSFET (F) (?)
Q_sw3 = 0.000000155 %5e-10; % Gate charges of the top MOSFET (F) (?)
Q_sw4 = 0.000000155 %5e-10; % Gate charges of the bottom MOSFET (F) (?)
L = 0.000006; % Inductance (H)
width; % Normalized gate width
end
위에서 width 를 남겨놓은 이유는 정의 안하고 난중에 생성할때 줄꺼니까...
⦿methods
-method definition block
-Class definitions can contain multiple property definition blocks, each specifying different attribute settings that apply to the properties in that particular block
- 보통 Constructor 부터 시작을 한다
constructor의 예
ex)
methods
function obj = Converter(width) // 해당 classname 이 Converter이니까.... classname과 같은이름
가진 method는 constructor
obj.R_sw1 = obj.R_sw1/width;
obj.R_sw2 = obj.R_sw2/width;
obj.R_sw3 = obj.R_sw3/width;
obj.R_sw4 = obj.R_sw4/width;
obj.Q_sw1 = obj.Q_sw1*width;
obj.Q_sw2 = obj.Q_sw2*width;
obj.Q_sw3 = obj.Q_sw3*width;
obj.Q_sw4 = obj.Q_sw4*width;
end %constructor Converter
그리고는 method 들을 정의 해 준다 쉽죠잉?
ex)
function eff = eff_i_out(obj, v_in, v_out, i_out)
eff = zeros(size(v_in));
i_valid = and(v_in>0, v_out>0);
i_valid = and(i_valid, i_out>0);
v_in = v_in(i_valid);
v_out = v_out(i_valid);
i_out = i_out(i_valid);
p_conv = obj.converter(v_in,v_out,i_out);
p_out = v_out.*i_out;
eff_valid = p_out./(p_out+p_conv);
eff(i_valid) = eff_valid;
end
function p_converter = p_converter(obj, V_in_vec, V_out,vec, I_out_vec).............
여기서 신기한게 하나 있죠??
i_valid = and(v_in>0, v_out>0);
i_valid = and (i_valid, i_out>0);
요거.... ㅋㅋㅋㅋ
요거는 다음에ㅋㅋㅋ
'Learning stuff' 카테고리의 다른 글
Cache Optimization (0) | 2013.01.25 |
---|---|
matlab index (0) | 2012.12.12 |
C++ 생성자 (0) | 2012.12.12 |
matlab 관련 강의 (3) | 2012.12.12 |
labview_2 (0) | 2012.12.11 |
설정
트랙백
댓글
글
C++ 생성자
아 그래....
갑자기 그 단어랑 개념이 생각이 안나서 막 생각하고 있는데 영현이형 덕분에 다시 생각이 나게 되었다.
원래는 Matlab 코드를 보다가 아, 이거 뭐더라..... 했는데 가만보니 내가 C++ 에서 배운 개념이었기 때문에 여기다가 정리를 하여본다.
생성자 : 생성자는 객체를 생성할때 자동으로 호출되는 함수로 클래스와 같은 이름의 형태를 띈 함수이며, 리턴형이 없다. 생성자가 필요한 이유는 말그대로 객체를 생성하고 동시에 초기화 시켜주기 위함이다.
1. 디폴트 생성자
2. 인자가 있는 생성자
3. 복사 생성자가 있는데
간단하게 코드만 보여줘도 알듯...
#include<iostream>
class Person{
public : int number;
char *name;
//////1.디폴트 생성자 //////
Person()
{
number = 0; name = "Noname";
}
//////2.디폴트 생성자 //////
Person(int number_reg, char * name_reg)
{
number = number_reg; name = name_reg;
}
//////3.복사 생성자 //////
Person(const person &p) // 자신과 동일한 타입의 객체에 대한 레퍼런스를 인자로 받는다.
{
number = p.number;
name = p.name;
}
void print()
{
cout<< "Number : "<<number<<endl<<"Name : "<<name<< endl;
}
};
'Learning stuff' 카테고리의 다른 글
matlab index (0) | 2012.12.12 |
---|---|
matlab_classdef (0) | 2012.12.12 |
matlab 관련 강의 (3) | 2012.12.12 |
labview_2 (0) | 2012.12.11 |
mearly machine diagram (0) | 2012.12.11 |
설정
트랙백
댓글
글
matlab 관련 강의
이아우후후후
http://engi-agora.tistory.com/2
http://blog.naver.com/PostView.nhn?blogId=lark123&logNo=140017082054&redirect=Dlog&widgetTypeCall=true
http://pinkwink.kr/267
http://www.matlabinuse.com/index.php?mid=Mastering_MATLAB&page=1
사실 매트랩에 관한 정보들은 너무 많아서 따로 정리하지 않아도 된다능 그렇다능
내 사진이나 먹으라능
'Learning stuff' 카테고리의 다른 글
matlab_classdef (0) | 2012.12.12 |
---|---|
C++ 생성자 (0) | 2012.12.12 |
labview_2 (0) | 2012.12.11 |
mearly machine diagram (0) | 2012.12.11 |
page mapping (0) | 2012.12.04 |
설정
트랙백
댓글
글
labview_2
'Learning stuff' 카테고리의 다른 글
C++ 생성자 (0) | 2012.12.12 |
---|---|
matlab 관련 강의 (3) | 2012.12.12 |
mearly machine diagram (0) | 2012.12.11 |
page mapping (0) | 2012.12.04 |
mosfet 기호 (0) | 2012.09.11 |
설정
트랙백
댓글
글
mearly machine diagram
-moore
-mealy(Each edge is labeled with "j / k" where j is the input and k is the output.)
Mealy machine diagram 은 다음과 같이 이해하면 된다.
각 원 : current state
선 : next state
선 위의 값들 : input에 따른 output들
예를 들어 current state 가 S1 이라고 하자
이때 내가 다음 클럭까지 외부에서 input을 마구 바꾸었다고 한다면 S1원에서 나아간 선이나(빨간선) 그 위에 값이 막 변하고 있는 그림을 상상하면 된다. 사실 선 위의 값들은 Input Output의 종류가 단순하지 않은 이상 표가 동동 떠있다고 생각하는것이 이상적이다.
이렇게 말이다
'Learning stuff' 카테고리의 다른 글
matlab 관련 강의 (3) | 2012.12.12 |
---|---|
labview_2 (0) | 2012.12.11 |
page mapping (0) | 2012.12.04 |
mosfet 기호 (0) | 2012.09.11 |
엑셀로 피팅 (0) | 2012.08.08 |