# 資訊科技產業專案設計課程作業 4
###### tags: `資訊科技產業專案設計課程作業`
## Backgrounds
### processing in memory (PIM)
* motivation & mechanism: processing in memory (PIM) 是近年來十分熱門的研究主題。主要的動機來自於馮紐曼高牆: 即隨著 CPU 時脈不斷上升,主記憶體存取成為系統的瓶頸。加上 3D stack 技術逐漸成熟,學者提出將處理器以及記憶體整合至單一晶片上,以減少資料搬移所帶來的耗能和時間成本。
* Related companies
* UPMEM: 為一家法國公司,是就我所知目前世界上第一個推出實體 processing in memory 產品的公司。其產品 PIM-DIMM 為與 DIMM 相容的記憶體 (可以直接插在主板的 DIMM 插槽上),但是每個 memory bank 上都有放置一顆處理器,稱為 data processing unit (DPU),能用執行一套 RISC 指令集,且目前時脈達到 450 MHz。DPU 只能存取自己 bank 上的資料,若要與其他 DPU 或是 CPU 交換資料,則需要 CPU 的幫忙。
* 三星: 今年提出的 [PIM 架構](https://news.samsung.com/tw/三星為更廣泛的應用提升記憶體處理效能)
### Chorme OS
[Chorme OS](https://zh.wikipedia.org/zh-tw/Chrome_OS) 是一個 Linux kernel based 的作業系統.
### [1. UPMEM SDK software engineer](https://upmem.welcomekit.co/jobs/ingenieur-logiciel-sdk-h-f_grenoble)
#### 職缺介紹
UPMEM 開發了 SDK 來提供編程人員進行高階的 DPU programming,以方便加速他們的應用程式。而在 SDK software engineer 這個職缺中,工程師程負責提升 SDK 的 programmibility 和 performance。包含 runtime library (DPU 程式使用的 library) 和 host library (得以讓 host CPU 控制 DPU 的 library) 的改進與開發。
需要具備的技能與特質有:
Skills and experience:
Strong programming skills and knowledge of C
Embedded issues, parallelism, THREAD and FIFO
Professional written and oral English (communication and presentation)
Would be a plus:
Knowledge of CPU or GPU architectures
Knowledge of C++, Python , Java
Knowledge of programming in Assembler
Unit tests and continuous integration
#### 個人能力分析
* 優勢
* 我具備的最大優勢是我的碩論預計會和 UPMEM SDK 以及 driver 直接相關,我找出了一些其中不足的地方並預計進行改進。
* 具備 C 語言能力
* API 設計能力: 曾依照 OSEK 規格書設計與開發 OSEK COM, NM 相關 API
* Device driver 開發能力: Linux device driver 開發經驗, 嵌入式系統周邊裝置 driver 開發經驗 (e.g., CAN bus driver)
* 劣勢
* 對於 Python, Java 等語言比較不熟悉
#### 面試題
* 基本 C 語言技能
* 多執行緒程式設計
### [2. Software Engineer, Chrome OS Firmware](https://careers.google.com/jobs/results/125788591302288070-software-engineer-chrome-os-firmware/?distance=50&q=firmware)
#### 職缺介紹
替運行 Chorme OS 的裝置撰寫 firmware.
需要具備的技能與特質有:
Minimum qualifications:
Bachelor’s degree or equivalent practical experience
2 years of experience with software development in one or more programming languages, or 1 year of experience with an advanced degree
2 years of experience with data structures or algorithms in either an academic or industry setting
Experience with Linux, device drivers and embedded programming in C
Preferred qualifications:
Master's degree or PhD in Computer Science or related technical field
2 years of experience working with embedded operating systems
Experience building consumer electronics and knowledge of manufacturing, supply chain, and customer support processes
Experience working with Git, Gerrit, or developing for open source software such as Zephyr OS
Knowledge of ARM assembly, system BIOS, Linux kernel, device drivers
Ability to read hardware schematics and investigate hardware issues
#### 個人能力分析
* 優勢
* 具備嵌入式系統, device driver 開發相關經驗
* 劣勢
* 對於 hardware issues 的了解度需要再
#### 面試題
TODO