[Multi Vth]
📌 Multi Vth란?
트랜지스터의 문턱 전압과 누설 전류 사이의 특징을 이용하여
Time-critical 한 경로에 있는 로직들은 low_Vth 소자를 사용하고,
그 외의 경로에는 high_Vth 소자를 사용하여 누설 전력을 줄이고자 한 기술이다.
📌 구현 방법
1. 논리게이트의 다양한 Threshold Model 설계
ex) NMOS와 PMOS 트랜지스터의 Vth를 파라미터로 가지는 게이트 정의
module multi_vth_gate(
input A, B,
output Y
);
parameter HIGH_VTH = 0.4;
parameter LOW_VTH = 0.3;
nmos #(HIGH_VTH) nmos_A (.D(A), .G(1'b1), .S(Y));
nmos #(LOW_VTH) nmos_B (.D(B), .G(1'b1), .S(Y));
// Additional logic as needed
endmodule
2. 다양한 Threshold를 사용하는 논리 회로 설계
ex) 다양한 Threshold를 가지는 게이트를 조합
module multi_vth_logic(
input [1:0] A, B,
output Y
);
wire Y1, Y2;
multi_vth_gate #(0.4, 0.3) gate1 (.A(A[0]), .B(B), .Y(Y1));
multi_vth_gate #(0.3, 0.2) gate2 (.A(A[1]), .B(B), .Y(Y2));
endmodule
📌 특징 및 장단점
1. 전력 소모의 최적화
- 다양한 Vth를 사용함으로써, 전력 소모를 필요에 따라 조절할 수 있다.
- 높은 Vth를 사용하면, 전력 소모가 감소
2. 동적 및 정적 전력 제어
- Multi-Vth를 사용하면 동적 전력과 정적 전력 모두를 제어할 수 있다.
- 동적 전력은 스위칭 동작에서 발생하는 전력을 의미하며,
정적 전력은 레이어에서 전류가 흐르는 경우에 발생하는 전력을 의미한다.
3. 선택적 적용
- Multi Vth는 특정 논리 경로나 회로에 선택적으로 적용될 수 있다.
4. 설계 복잡성
- Multl Vth를 지정하면 각 트랜지스터마다 Threshold 값을 지정해줘야 한다.
5. 지연 시간 증가
- 높은 Vth를 사용하면 트랜지스터의 전환 시간이 늘어나므로
논리 회로의 전체 딜레이가 증가할 수 있다.
따라서 전력 최적화와 딜레이간의 균형을 잘 유지해야 한다.
6. 제조 공정의 종속성
- Multi Vth는 제조 공정애 따라 다르게 적용될 수 있다.
특정 제조 공정에서 최적인 Threshold 값을 찾기 위핸 실험과 조율이 필요하다.
[Multi Vdd]
📌 Multi Vdd란?
칩 안에는 다양한 모듈들이 있고, 동작 성능은 다 제각각이다.
어떤 A 모듈은 고성능으로 동작하며, B 모듈은 낮은 성능으로 동작해야 할 필요가 있다고 가정해보자.
여기서 A를 위해 A와 B에 모두 높은 전원을 사용하게 되면,
B에는 불필요한 높은 전원이 공급되어 Dynamic Power가 증가할 것이다.
이와 같은 문제점을 해결하기 위해서 Multi Vdd 방식이 도입되었다.
📌 구현 방법
Multi Vdd 또한 Verilog로 구현이 가능하다.
간단한 에시를 들어보자.
module HighVoltageBlock(input clk, input reset, output reg highVoltageOutput);
// High voltage domain logic implementation
always @(posedge clk or posedge reset) begin
if (reset) begin
highVoltageOutput <= 1'b0;
end else begin
// High voltage domain logic
// ...
end
end
endmodule
module LowVoltageBlock(input clk, input reset, output reg lowVoltageOutput);
// Low voltage domain logic implementation
always @(posedge clk or posedge reset) begin
if (reset) begin
lowVoltageOutput <= 1'b0;
end else begin
// Low voltage domain logic
// ...
end
end
endmodule
module TopModule(input clk, input wire reset);
reg highVoltageOutput;
reg lowVoltageOutput;
// Instantiate modules with different voltage domains
HighVoltageBlock highVoltageBlock(.clk(clk), .reset(reset), .highVoltageOutput(highVoltageOutput));
LowVoltageBlock lowVoltageBlock(.clk(clk), .reset(reset), .lowVoltageOutput(lowVoltageOutput));
always @(posedge clk or posedge reset) begin
if (reset) begin
// Reset logic
highVoltageOutput <= 1'b0;
lowVoltageOutput <= 1'b0;
end else begin
// Control logic to enable/disable voltage domains based on system requirements
// ...
end
end
endmodule
📌 특징 및 장단점
1. 전력 소모의 최적화
- 각 회로 블록에 최적화된 전압 도메인을 제공하여 전체 시스템의 전력 소비를 최소화한다.
- 높은 성능이 필요한 부분은 높은 전압 도메인에서 동작하므로 성능이 향상되고
낮은 전압 도메인에서 동작하는 부분은 에너지 효율이 향상된다.
2. 동적 전압 및 주파수 스케일링
- Multi Vdd는 동적으로 전압 및 주파수를 스케일링하여 부분 회로 블록이 실행되는 동안에만
필요한 전압 도메인을 활성화하 수 있다.
4. 설계 복잡성
- 각 회로 블록에 대한 전압 도메인을 설정하고 관리해야 하므로 설계 및 관리가 복잡해진다.
5. 추가 오버헤드
- 전압 도메인 전환 및 관리에 따른 추가적인 회로 및 논리가 필요하므로,
오버헤드가 발생할 수도 있다.
- 오버헤드 : 어떤 시스템이나 프로그램, 동작에 추가적으로 발생하는 부가적 비용이나 리소스 소모
6. 신호 이슈
- 서로 다른 전압 도메인에서 동작하는 부분 간에 신호 레벨 및 인터페이스 문제가 발생할 수 있다.
[DVFS]
📌 DVFS 란?
Dynamic Voltage and Frequency Scaling의 약자로, 동적 전압 및 주파수 조절을 의미한다.
이는 전력 소비를 최적화하고 성능을 조절하여 효율성을 향상시키는 기술로
주로 모바일 장치, 노트북, 서버 및 임베디드 시스템에서 사용된다.
시스템의 현재 작업 부하나 요구 사항에 따라 전압과 주파수를 동적으로 조절하여
에너지 효율성을 최적하하는 방법으로
높은 성능이 필요한 경우에는 전압과 주파수를 높여 성능을 높이고
낮은 부하나 저전력 상태에서는 전압과 주파수를 낮추어 전력 소비를 줄인다.
📌 구현 방법
module DVFS (
input clk,
input [1:0] control_signal,
output new_clk
);
reg [1:0] current_frequency;
// 주파수에 따른 분주비 정의
parameter FREQ_LOW_DIVIDER = 2'b00;
parameter FREQ_MEDIUM_DIVIDER = 2'b01;
parameter FREQ_HIGH_DIVIDER = 2'b10;
reg [1:0] clk_divider; // 분주비 레지스터 추가
// 현재 주파수에 따른 분주비 선택
always @(posedge clk) begin
case (current_frequency)
FREQ_LOW: clk_divider <= FREQ_LOW_DIVIDER; // 주파수에 따른 분주비 설정
FREQ_MEDIUM: clk_divider <= FREQ_MEDIUM_DIVIDER;
FREQ_HIGH: clk_divider <= FREQ_HIGH_DIVIDER;
default: clk_divider <= 2'b00;
endcase
end
// 새로운 클럭 생성
always @(posedge clk) begin
if (clk_divider == FREQ_LOW_DIVIDER) begin
new_clk <= clk >> 1; // 2로 나눈 클럭
end else if (clk_divider == FREQ_MEDIUM_DIVIDER) begin
new_clk <= clk; // 원래 클럭
end else if (clk_divider == FREQ_HIGH_DIVIDER) begin
new_clk <= clk << 1; // 2배로 늘린 클럭
end else begin
new_clk <= clk;
end
end
// 제어 신호에 따라 주파수 변경
always @(posedge clk) begin
case (control_signal)
2'b01: current_frequency <= FREQ_LOW;
2'b10: current_frequency <= FREQ_MEDIUM;
2'b11: current_frequency <= FREQ_HIGH;
default: current_frequency <= 2'b00;
endcase
end
endmodule
📌 특징 및 장단점
1. 전력 소모의 최적화
- DVFS는 작업 부하에 다라 전압과 주파수를 동적으로 조절하여 에너지 소비를 최적화한다
2. 열 효과 감소
- 높은 전압과 주파수는 일반적으로 높은 열을 발생시키기 때문에, DVFS를 통해 필요에 따라 성능을
제어함으로써 열 효과를 감소시킬 수 있다.
3. 배터리 수명 연장
- 모바일 기기에서는 DVFS를 사용하여 낮은 부하에서 에너지 소비를 최소화하는 방식으로
배터리 수명을 연장시킬 수 있다.
4. 설계 복잡성
- DVFS 를 구현하려면 복잡한 하드웨어 및 제어 로직이 필요하며,
이로 인해 설계각 복잡해질 수 있다.
5. 추가 오버헤드
- 동적으로 전압과 주파수를 조절하는 데 필요한 추가적인 하드웨어 및 제어 논리는
일부 오버헤드를 유발할 수 있다.
6. 응답 지연
- 전압 및 주파수를 동적으로 조절하느 데 시간이 걸릴 수 있어,
응답 지연이 발생할 수 있다. 특히 빠른 응답이 요구되는 환경에서는 이를 고려해야 한다.
참 조
https://blog.naver.com/PostView.naver?blogId=zzbksk&logNo=221422605046
https://wh00300.tistory.com/280#google_vignette
'# Programming > - FPGA 관련 지식' 카테고리의 다른 글
[FPGA] RTL에서의 저전력 설계 방법(1/2) - Clock Gating, Power Gating (0) | 2023.12.08 |
---|---|
H/W 통신 프로토콜의 모든 것 Part.1 - UART, SPI, I2C (1) | 2023.12.07 |
[FPGA] FPGA, ASIC, SoC의 차이점 (0) | 2023.09.23 |
[FPGA] Hardware Design의 이해, RTL과 FPGA란? (1) | 2023.09.20 |