Hafoom.com

https://rakuraku.tistory.com/147#recentEntries

'MicroArchitecture > Hardware & Architecture' 카테고리의 다른 글

펌. 마이크로프로세서/마이컴  (0) 2019.12.17
Nios Gen2  (0) 2019.11.21

Comment +0

Device Family 맞춰줄 것

 

Qsys로 clk, reset 전부 연결

페리들은 s1(Slave) 를 data_master 연결

 

IRQ 디폴트 0 그대로. 두고.

Qsys - System - Assign Base address 클릭

 

instruction cache를 TCM(Tightly Coupled Memory) 구성할 땐 IRQ를 0~3 맞추는 등 좀 더 복잡해진다.

니오스가 기본적으로 하버드라고 하는데 이건 폰 노이만이 아닌가 싶다...

 

'MicroArchitecture > Hardware & Architecture' 카테고리의 다른 글

펌. 마이크로프로세서/마이컴  (0) 2019.12.17
Nios Gen2  (0) 2019.11.21

Comment +0

딥러닝......

DeepLearning2019. 9. 17. 01:23

나는 석사과정을 영상처리/패턴인식 연구개발 했다.

박사과정은 하드웨어/프로세서 설계에 관한 연구를 했다.

 

전혀 연관 짓기 힘들 것으로 보았던 두 분야가.......

사실상 현재 최강 조합이 되었다...

그렇다고 내가 최강인건 아니고.....

 

내가 석사과정 때 주로 한건(정확히는 학사3학년부터)

cam shift 기반 hand tracking, finger tracking 으로 시작해서..

라이브러리 없이 화소를 바탕으로 한 feature 기반 문자 인식(인식률 80% 폭망)

트레이닝 데이터부터 , 트레이닝 프로그램, 테스트 프로그램 혼자 개발...(물론 코치는 있었음)

잡지나 책 이미지를 대상으로 텍스트/비텍스트/표 영역 분할(석사학위논문)

악보 인식을 위한 이진화, 차 번호판 인식 등이 있다.

차 번호판 인식은 학부 졸업논문인데... 일반적인 학부생 수준은 넘어 선다....

독착성이 없을 뿐이지... 난이도는 상당히 높다.

학부생들 프로젝트 검사를 해보면서 요즘 애들 수준을 가늠해보면...

요즘 영상처리 라이브러리가 상당히 잘 되어있어서 거즘 예제를 갖다 쓰더라...

 

지금 딥러닝을 다시 보니... 예전 2013년도 쯤에 딥러닝이라는 걸 접한게 기억난다.... 붐은 아마 2015년엔가 일어난 것으로 보인다. 그 때 지인은..딥러닝을 무시했는데..그 다음 딥러닝이 떴었지.......(그.. 지인은 최근 딥러닝SCI를 썼다..)

 

기존의 뉴럴 네트워크야 패턴인식 교수님들이 기본적으로 깔고 가는 것으로.. SVM보다 간혹 오히려 구렸으나...

갑자기 feature extraction 부분을 붙여서 CNN을 만든다. 

콘볼루션이라는건...나도 2013년도 번호판 인식을 할 때 feature extraction 에 많이들 사용하는 거 갖다 썼는데.. 그런 것들을 전부 학습기에 붙였다고 한다...

콘볼루션이야..영상처리의 기초중의 기초라..........(매트랩 가지고 2년 가까이 콘볼루션 짓거리만 한 나로써는....)

 

따라서. 별 거 없다.......(기존 고전적인 신경망에서 조금 업그레이드 수준..)

 

뭐 성능은 상당히 좋아졌다고는 하는데..... 

아무튼...많은 연산 처리와 임베디드 하드웨어(모바일)의 발달에 따라 하드웨어 관점에서의 신경망 가속 처리가 중요해졌다.

난 SIMD 구조인 GPU를 연구했으나, NPU와 같은 뉴럴네트워크를 위한 아키텍처는 GPU로 최적화하긴 힘들다.

현재 분석중이나, 결국 메모리가 문제다...

 

 

'DeepLearning' 카테고리의 다른 글

딥러닝......  (0) 2019.09.17
딥러닝 공부  (0) 2019.09.10

Comment +0

딥러닝 공부

DeepLearning2019. 9. 10. 00:56

딥러닝 중 CNN 모델에 관한 좋은........자료

 

http://aikorea.org/cs231n/convolutional-networks/

 

CS231n Convolutional Neural Networks for Visual Recognition

Table of Contents: 컨볼루션 신경망 (ConvNet) 컨볼루션 신경망 (Convolutional Neural Network, 이하 ConvNet)은 앞 장에서 다룬 일반 신경망과 매우 유사하다. ConvNet은 학습 가능한 가중치 (weight)와 바이어스(bias)로 구성되어 있다. 각 뉴런은 입력을 받아 내적 연산( dot product )을 한 뒤 선택에 따라 비선형 (non-linear) 연산을 한다. 전체 네트워크는 일반 신경망과

aikorea.org

 

 

'DeepLearning' 카테고리의 다른 글

딥러닝......  (0) 2019.09.17
딥러닝 공부  (0) 2019.09.10

Comment +0

용어 정리*개념정리

ARM+@2019. 6. 25. 19:48

인터넷에서 긁어 모아 정리한 개념 정리.

 

임베디드 시스템 순서

기구 -> 아트웍 -> 회로 -> 펌웨어,디바이스드라이버,BSP -> 커널 -> 어플리케이션

 

 

 

BSP(Board Support Package)

https://msnayana.blog.me/80065524365

 영어 그대로 해석하면 되겠지만, 쉽게 말해 부트로더 + 실시간 운영체제를 로드하기 위한 최소한의 장치를 지원하고 주변 장치를 지원하기 위한 드라이버를 총칭한다.

루트 파일 시스템(root file system), 툴체인(toolchain) 등을 포함하기도 한다.

(커널은 통상적으로 제외된다. )

 칩 제조업체(S사) 를 예로 레퍼런스 보드를 개발하여 보여준다 하면, BSP까지는 공급하여 테스트를 하게 된다.

한마디로, 최소한 보드의 기능 및 성능을 확인할 수 있도록 동작시키는 패키지로 보면 되겠다.

MS사의 설명을 따르면, 특정 하드웨어 플랫폼에 임베디드 운영체제를 빠르게 구축하는데 사용되는 소스 바이너리 소프트웨어 패키지라고 한다. 드라이버+OAL(OEM적응 계층)+HAL(하드웨어 추상화 계층) + BIOS 라고 한다.

정리하자면, 부트로더+드라이버+BIOS+파일시스템+툴체인 정도로 보면 되겠다. (정확한 요소를 딱 집지는 못하겠다)

 

 

펌웨어

펌웨어 개발자라고 하면 회로단 또는 커널까지 연관되는 경우가 많다...원래 펌웨어 자체만 따지면 그냥 하드웨어를 고려한 소프트웨어로 보면 된다.

펌웨어는 PROM(Programmable Read-Only Memory) 내에 삽입되어 영구적으로 컴퓨터 장치의 일부가 되는 프로그램이다. 다들 알다시피 소프트웨어와 하드웨어 중간 펌웨어다. IBM에서는 마이크로 코드라는 용어를 쓴다고 한다.

마이크로 코드 시뮬레이션을 통해 테스트된다고 한다...

컴퓨터나 주변장치의 작동을 제어하기 위해 rom에 직접 프로그램되어 있는 영구적인 명령과 데이터.

사실상 펌웨어 개발자는 주변장치. 즉 하드웨어적인 접근에 관련된 소프트웨어를 일반 사용자가 수정 못하는 rom에 박아 넣는 역할을 한다. 이러면서 다른 요소들을 알아야 하므로 사실상 임베디드 시스템 개발자가 더 맞는지도 모르겠다.

확실한건 소프트웨어와 다르기 때문에 이름이 다르다는 것.. 소프트웨어는 OS에 의해 실행여부나 작업할당이 달라질 수 있다. 또한 OS가 알아서 해주는 면이 있기 때문에 코드만 짜면 된다.. 펌웨어는 하드웨어를 고려하여 작성하고 OS는 고려안한다.

 

 

커널

(기본 개념이므로 대충 적음. 리눅스를 전제로.)

운영체제를 이루는 가장 핵심적인 소프트웨어

시스템의 구동에 필요한 환경 설정과 수행되는 프로그램들을 스케줄링하는 소프트웨어 집합

 

 

모놀로식 커널과 마이크로 커널

https://selfish-developer.com/entry/%EB%AA%A8%EB%86%80%EB%A6%AC%EC%8B%9DMonolithic-kernel%EA%B3%BC-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9CMicro-%EC%BB%A4%EB%84%90

커널을 공부한다면 필수적으로 알아야 하는 개념으로 사료된다. 

마이크로 커널 : OS는 각 기능을 서브 시스템으로 분할하여 핵심 기능만을 커널에 담고 코어 부분에서 담당하도록 한다. (하나의 서비스가 죽더라도 전체 커널이 panic되지 않기 때문에 임베디드에 쓰인다는데 이해가 잘 안간다.) File system이나 Driver는 유저 공간에서 실행된다.

모놀리식 커널 : 단일형 커널이라고도 한다. 입출력, 네트워크, 장치 지원 등 일반적인 기능들을 동일한 메모리 공간에 적재 및 실행한다. 리눅스는 하나의 프로그램으로 수행되므로 모놀리식이다. 어플리케이션을 제외하고 모두 커널이 관리한다. 

 

 

Kernel Module

 마이크로 커널이 가지는 모듈 기능을 모놀로식 커널에 도입함으로써 '커널 모듈'개념이 등장한다.

 커널 모듈(Kernel modules, KMOD) 등의 여러가지 이름으로 쓰인다.... LKM(Loadable kernel module)이라는 표현도 쓴다. OS에서 실행중인 커널을 확장하는 코드를 포함하는 목적파일로써, 새로운 하드웨어(디바이스 드라이버)나 파일시스템을 지원하거나 시스템 호출을 추가하는데 사용된다.

 리눅스 측면에서 얘기하자면 v2.x 가 되면서 커널 모듈개념이 추가되었다. 커널 크기를 줄이기 위한 방법 중 하나로 커널 전체를 컴파일할 필요 없이 모듈단위로만 컴파일해서 동적으로 커널에 추가해주는 개념이다.

혹시 모르니 이것저것 다 포함해주는 커널과 다르게 나중에 필요에 따라 추가하므로 확장성, 재사용성을 높일 수 있다.

다시 말해, 디바이스와의 연결 및 구동을 제어하기 위한 커널은 매번 새로운 기능을 추가하거나 디바이스를 추가할 때마다 커널을 다시 컴파일하거나 시스템 재부팅을 해야할 필요성이 사라지게 된 것이다. 

커널 모듈에서 좀 더 작은 개념이 디바이스 드라이버이다.

 

디바이스 드라이버

커널모듈은 커널 영역에서 실행되므로 사용자 접근이 불가능한 반면 디바이스 드라이버는 가상 파일 시스템에 연관시켜서 사용자 접근을 허용시켜준다. 상위단 애플리케이션에게 연결을 허용하는 역할.

 

 

 

펌웨어(Firmware)와 디바이스 드라이버(Device Driver)

펌웨어는 디바이스를 구동하는 소프트웨어이다. 디바이스 드라이버는 당신의 OS가 어떻게 장치(device)와 통신하는지를 알려주는 소프트웨어이다. 모든 디바이스가 펌웨어를 가지고 있진 않다. 일정 수준의 지능, 복잡도를 필요로 하는 경우 가진다.

펌웨에를 갖는 장치는 디바이스 내부에 장착되서 나온다. ROM 아니면 PROM chip와 같이 디바이스가 초기화(부팅)될 때 로드될 장치가 필요하다.  펌웨어의 예로 DVD player, 핸드폰, 디지털 카메라 등..

그 이상의 연산을 필요로 한다면 OS가 들어가게 되고 그 위에 응용 소프트웨어를 작성하게 되는데.. 장치와의 통신이나 관여를 OS가 제한하기 때문에 이것을 커널단에서 연결시켜주는 역할을 해주는 것이다... 

펌웨어가 커널단에서 구현된다고 하는데 참 애매하다...

펌웨어는 ROM에, OS(커널)은 DISK에

펌웨어는 작은 프로그램, 커널은 집합.

펌웨어는 저수준 연산을 목적, OS는 high-level 인터페이스가 동반됨.

펌웨어라는게 대충 아는건 어렵지 않지만 개발을 하는 관점에서 혼동되는 면이 있다. 시스템 발전과 개발환경이 바뀌어서 그런지 모르겠다만....

펌웨어는 운영체제의 한 방식으로 장치를 제어하기 위한 것이므로 훨씬 제한적이고 하나의 목적인 반면 OS(커널)은 여러 종류의 소프트웨어를 여러 하드웨어 장치에서 실행할 수 있는 범용 시스템

현대 시스템에서는 펌웨어가 바로 동작하는게 아니라 디바이스 드라이버(device driver)에서 로드하도록 구현된다......

차이점은 여러 사람들이 서로 다른 관점에서 서술한다. 

펌웨어는 딱 하드웨어적으로 만들어진 것에 생명을 불어넣어주는 프로그램 정도이고 디바이스 드라이버는 OS와 하드웨어 구성 요소 사이의 매개체로 묘사된다. 하지만........OS를 집어넣을 경우 펌웨어가 OS의 디바이스 드라이버를 통해 로드되는 것으로 보인다.

 

 

BIOS(Basic Input/Output System)

일반적으로 메인보드의 펌웨어다. 바이오스는 OS 중 가장 기본적인 컴퓨터 입출력을 처리하는 소프트웨어. 따라서 OS는 아니다. IBM 기준으로 부팅 절차에서 하드웨어 초기화를 수행하고 OS나 응용프로그램에게 런타임 서비스를 제공한다.

원래는 롬에 존재했으나 현재는 플래시 메모리가 바이오스의 주된 저장 매체이다.

실제 운영 체제를 동작시키기 위한 시스템정도다. 

 

 

 

 

Evaluation Board (평가보드, 샘플보드) 

http://sewoon.com/mall/kims_lib/board/dictionaryboard.php?table=Dictionary&action=print&l=488
Evaluation이란 용어는 무언가의 가치를 평가해본다는 의미이다. 이것은 S/W와 H/W 전반에 걸쳐 사용되는 용어로서, 해당 제품을 구매하기 전에 샘플 혹은 데모버전으로서 사용해본다는 의미가 담겨있다.

Evaluation board란 주로 IC등의 성능을 테스트해보기위한 일종의 Jig board를 의미한다. 즉 실제로 똑같이 사용될지는 알수 없지만, 시스템 제작을 위해 해당 IC가 어느 정도 성능을 낼 수 있는지 보여주기 위해 IC제작사측에서 측정용 Jig board를 꾸리고 칩을 실장하여 만들게 된다.

RF에선 RFIC나 MMIC 등의 성능을 가늠해보고 튜닝성을 검증하기 위해 대부분 Evaluation board를 제공한다. 하지만 실제 사용될 시스템의 PCB에서는 특성이 많건 적건 변하게 되는데, 시스템 설계자가 해야되는 중요한 작업 중 하나가 바로 이러한 상황에 대한 튜닝 작업들이다.

그러므로 Evaluation Board 상의 소자 배치와 값을 그대로 믿고 쓰기보다는, 해당 RFIC/MMIC에서 끌어낼 수 있는 성능이 어떤 지를 검증해보기 위한 용도라고 보는 것이 더 적합하다.

수GHz 대역의 RFIC류는 이런 evaluation board가 기본적으로 제공될 수 있지만, 수십GHz 대의 MMIC의 경우는 패키징 자체가 매우 어려워서 bare chip으로만 제공하는 경우가 많다. 즉 사용자가 직접 패키징을 해서 성능을 검증해야 한다. 반면 특수하게 세라믹/에폭시 패키지를 응용하여 evaluation board를 제공하는 경우도 있지만 그리 많지는 않다.

 

 

 

 

'ARM+@' 카테고리의 다른 글

용어 정리*개념정리  (0) 2019.06.25

Comment +0