'전체 글'에 해당되는 글 19건

  1. 2017.07.16 엑셀 업무 관리 양식
  2. 2017.07.12 NAND flash ECC 설명
  3. 2016.10.27 함수포인터 활용

- 효율적인 업무 관리를 위하여 엑셀 양식을 작성 하였음.

- 하루단위 업무를 나눠서 작성해야함.

- 업무를 작성할 때, 정확히 행동 단위로 작성 해야 끝을 확실히 할 수 있음


※ 구글링을 통해 알게된 최영우 직무 분석 전문가님의 블로그에서 퍼온것을 내 업무에 맞도록 수정 하였습니다.

(http://blog.naver.com/hpc_ceo/220814306116) - 문제가 된다면 삭제 하도록 하겠습니다.


업무관리.xlsx


'기타등등' 카테고리의 다른 글

NAND flash ECC 설명  (0) 2017.07.12
기울기가 X증가량 분에 Y증가량인 이유  (1) 2015.03.08
typedef struct와 struct의 차이  (0) 2015.01.08
Posted by *me
:

NAND flash ECC 설명

기타등등 2017. 7. 12. 02:37 |


멀티 레벨화, Cell 당 정보량 증가시킴( Vnand, TLC..)

-> Nand flash 자체의 오류 증가 = 높은 수준의 ECC 가 필요하다.



NAND flash 용 ECC는

메모리의 채널 특성 및 데이터 저장 장치에서 요구되는 신뢰성 등을 고려하여 설계 되어야 한다.

데이터 저장 장치에는 저장 시점과 읽는 시점이 다르기 때문에 ARQ(automatic repeat request)를 사용할 수 없고, FEC(forward error correction)을 사용해야한다.

또한 저장장치에서는 ECC parity overhead를 최소화 하기 위해, 높은 부호율을 갖는 부호를 사용할 것이 요구되며, 저장장치이므로 통신시스템 대비 매우 높은 신뢰성이 보장되야함


ARQ(automatic repeat request) : 역방향 채널을 통해 ACK 와 NACK 정보를 전송하여 보정

FEC(Forward Error Correction) : 송신부에서 송신전에 미리 수행

 - 장점 : 연속적인 data 전송, 역방향 채널 필요 없다, 군집오류(burst error)에 강함

 - 단점 : 기기와 coding 방식이 복잡, 잉여 bit로 인한 채널 낭비

 - 종류(기억장치의 유무에 따라)

  A. Block Code : 

선형 code(hamming code) : 자기정정부호

순회 code(CRC code, BCH  code) : reed solomon code 는 bch code 의 일종

  B. Convolutional Code :

부호화는 일정 길이의 block 단위로 이루어 지는데, 각 block 에서 부호화가 그 block에도 영향을 받는 방식의 기법, Tree부호라고도 함



UBER(uncorrectable bit-error rate) / RBER(raw bit-error rate)

- UBER :  시스템의 요구 신뢰성, SER(sector-error rate) 또는 FER(frame-error rate)를 정보어(information) 크기로 나눈 값, 10의 -15제곱 수준 이하가 요구된다.

- RBER : 메모리에서 읽어넨 데이터자체의 오류 수준 ( uncoded bit error rate와 동일한 개념)



◎ 대수 부호 적용

- 순환 부호는 부호의 설계 및 정정 능력 예측이 용이 하고 HW 구성 방법이 많이 존재하기 때문에 Nand flash 에서 많이 사용 되었다.

- SLC 위주의 Nand는 오류의 수준이 높지 않아서 수백 비트의 길이를 가지는 Hamming부호, 정정 능력이 작은  BCH(Bose-Chaudhuri-Hocquenghem)부호 주로 사용



오류 정정 원리

1) 부호화 과정 

 - 디지정 정보는 0과 1로 이루어진 정보수열로 표형. k개의 비트 단위로 블록구성(각 블록을 정보 벡터라 함, codeword, 부호벡터)

 - 모든 부호어의 집합 : [n,k]

 - 부호화 과정에서 추가되는 비트 : parity bit  (대부분의 parity bit는 정보비트들의 특정한 선형 결합으로 만들어짐)

 - [n,k] -> n-k개의 패리티 비트들을 어떤 선형 결합으로 설계하느냐에 따라 부호의 오류 정정 능력이 달라짐


부호화 이전의 정보 벡터가 차지하는 시간 T = 해당 부호어가 차지하는 시간 T

-> 부호화를 하게 되면 신호가 가지는 시간에 따른 변화율이 n/k만큼 증가. 이는 송신신호 주파수 대역폭이 그만큼 증가함을 의미함

(이러한 대역폭의 증가는 오류제어를 위해 지불될 비용이 됨)

부호율(code rate) ,비트당 정보량 : k/n



'기타등등' 카테고리의 다른 글

엑셀 업무 관리 양식  (0) 2017.07.16
기울기가 X증가량 분에 Y증가량인 이유  (1) 2015.03.08
typedef struct와 struct의 차이  (0) 2015.01.08
Posted by *me
:

함수포인터 활용

이론/C/C++ 2016. 10. 27. 01:36 |

함수 포인터에 대한 정의 이다.

일반 포인터가 변수에 대한 주소를 가지고, 변수를 가리킬 수 있는것 처럼 함수, 즉 실행가능한 코드를 가리키고 있는 포인터이다.


위키에서의 예시를 먼저 확인 해본다면

func1 은 하나의 더블형 매개변수를 가지며, 다른 더블형을 반환한다.
(기능은 센티미터를 인치로 변환하게 된다)
func2 는 정수형, 상수 문자 배열에 대한 포인터를 매개변수로 가진다. 그리고 문자에 대한 포인터를 반환한다.
(기능은 문자배열에서 주어진 문자의 첫번째 발생에 대한 포인터를 반환하는 문자열 라이브러리 함수의 역할이다.)

함수 포인터로 선언 하는 방법은 :  함수의 리턴형  (*함수포인터명)(매개변수); 이런 식으로 된다
선언된 함수 포인터에 수포인터명 = 원하는 함수 방식으로 사용할 수 있게 되는 것이다.

이제 이 함수포인터 들을 조금 더 꼬아서 작성 해보자.


함수포인터가 익숙하지 않는 상태에선 이해하기 힘든 코드로 보인다. 그러니 하나씩 뜯어보자.

(실제로 이렇게 쓰는 경우도 있다고 어디서 듣긴했다...)


먼저 함수 선언부를 보자면

int func1(int a);

가장 기본적인, 처음에 배우는 정수형을 리턴하는 함수이다.


int func2(int (*p)(int),int a);

이전의 위키의 예시와 같이 생각하면 된다. 매개변수로 함수 포인터를 받는, 가장 기본적인 응용이라 생각된다.

함수의 내용에서 받은 함수를 호출하여 리턴값을 다시 리턴하는 방법을 활용하였다.


int (*func3(void))(int);

이번엔 리턴값이 함수포인터인 경우이다. 

위의 정의식을 그대로 첫번째 int 값에 넣어버리고 싶지만, 컴파일러가 그렇게 읽을 수는 없나보다.

따라서 해당 함수명의 앞에 리턴값이 포인터임을 알리는 *을 붙이고, 괄호로 해당 함수의 마지막까지 감싼다.(괄호를 하지 않으면 int*를 리턴값으로 인식할것이다)

마지막에 리턴하는 함수포인터의 매개변수 형식을 붙여주면 된다.

(위의 식에서 초록 글이 함수명이고, 노란글이 리턴형식이다.)


그냥 보기엔 어려워 보이지만, 몇번 보니까 조금은? 익숙해지는 거 같기도 하다..


다음은 메인에서의 호출 내용을 확인 해보자


int(*(*p)(void))(int) = func3;

p 라는 함수 포인터 변수를 선언하는 부분이다. 

원하는 함수는 리턴형이 리턴값을 int형으로 가지며 매개변수를 int형을 갖는 함수포인터 이고, 

자신의 매개변수는 void인 함수이다.


이후 호출 내용은 직접 확인 해볼 수 있도록 printf의 순서를 확인하자.



그래도 헷갈리는거 같다... ㅠㅠ


'이론 > C/C++' 카테고리의 다른 글

간단한 함수 포인터 예제  (0) 2015.06.16
C/C++ 시간 정보 얻기  (0) 2015.03.08
C++ 문자열 너비포함 출력  (0) 2015.03.08
C++에서 2차원 배열 동적할당, 반납  (0) 2015.01.10
Posted by *me
: