2017年6月18日 星期日
[SSD] Micron B0KB TLC 384Gb
B0KB則是TLC產品的代號,由於是同一晶片所以許多東西都是L06B一樣,當然容量、性能與壽命什麼的肯定不同,Die Size 48GB,快閃記憶體壽命是1500 P/E,由於是TLC所以需要ECC標準是更高的LDPC。
進一步瞭解到,美光3D NAND分別為L06B和B0KB,其中
L06B容量為256Gb(32GB),MLC架構設計。
B0KB容量為384Gb(48GB),是TLC產品,所以採用了ECC糾錯能力較高的LDPC提高NAND Flash的耐用性,而美光MX300系列SSD正是採用的型號為B0KB的3D TLC NAND。
[cid:image001.png@01D2E8EF.11731C30]
美光2016年在新加坡的Fab10實現了32層3D NAND的量產,型號分別是32GB (L06B MLC)和48GB(B0KB TLC),也是除原廠3D SSD之外,市場上品牌3D SSD的主要貨源之一。
[cid:image003.png@01D2E8EE.A2F918E0]
美光Fab工廠分佈和投產情況
[cid:image004.png@01D2E8EE.A2F918E0]
ref:https://kknews.cc/zh-tw/digital/l6e859.html
ref:http://www.chinaflashmarket.com/Producer/micron/News/156816
________________________________________ 3S CONFIDENTIALITY NOTICE: This message and all attachments may contain legally privileged and confidential information. Any unauthorized review, use or distribution by anyone other than the intended recipient is strictly prohibited. If you are not the intended recipient, please contact the sender immediately by replying to the message and delete all copies. Thank you.
[DDR] DRAM, DDR, MT/s, GT/s
DRAM 全名 Dynamic Random-Access Memory
SDRAM 全名為同步動態隨機存取記憶體(Synchronous DRAM),SDRAM 的特性是讓 DRAM 內部的工作時脈和主機板同步,以此提高存取的速度。
DDR 則是雙倍數據率(Double Data Rate),藉由 DDR 的技術,將一個工作時脈切分成兩份,就像是原本要一分鐘才能完成一份工作,藉由將 1 分鐘分成兩個 30 秒,並在這兩個 30 秒內完成工作,就能在相同的時間內完成兩倍的工作量。大幅提升資料傳輸的速度。
目前市場上的產品有 DDR3-1600 以及 DDR4-2133 等。其中,DDR3-1600 中的 1600 代表什麼?在記憶體規格中,有一個用來衡量記憶體傳輸速度的單位元,MT/s。MT/s 為 MegaTransfers per Second 的縮寫,意思是在一秒內可傳輸幾次資料。因此 DDR3-1600 便代表該產品具有 1600MT/s 的效能。
1 MT/s(megatransfers per second),1秒10的6次.
1 GT/s(gigatransfers per second),1秒10的9次.
但是,MT/s 這個單位僅用於記憶體效能中,要將其轉換成常見的 Gbps。Gbps 是用來衡量每秒鐘有多少資料傳輸,像是 4G 行動上網的速度、硬碟傳輸等皆是以此做速度快慢的衡量。1600MT/s 只需乘上 DDR3 的記憶體線寬 64bit,便是 102.4Gbps。要乘上線寬是因為 MT/s 只代表一秒可傳輸幾次資料,一次傳輸的資料量則是由線寬決定。因此,DDR3 後面所接的數字便代表著該記憶體的傳輸效率。
資料傳輸速率: Channel width (bits/transfer) × transfers/second = bits transferred/second
Ref:
http://technews.tw/2015/10/10/ram-memory-storage/
2017年5月18日 星期四
[Linux] .a / .so / .la 函式庫的差異
Linux 的 .a / .so / .la 函式庫的差異
Linux 的 *.a / .so / .la 在下述位置可以參考看看(Debian): (沒有在路徑內的應該是沒裝此 Library)
§ /usr/lib/x86_64-linux-gnu/ 有 *.a, *.so
§ /usr/lib/x86_64-linux-gnu/ImageMagick-6.7.7/modules-Q16/coders/ 有 *.la
§ /lib/modules/3.2.0-4-amd64/kernel/net/wireless/*.ko
Linux 的 .a / .so / .la 函式庫的差異
下述參考自此篇: Linux 下 .a / .so / .la 函式庫區別
§ .o (obj file) 是目標物件函式庫, 等同於 Windows 的 .obj
§ .a 為靜態函式庫, 可以是 一個 或 多個 .o 合在一起, 用於靜態連結
§ .la 為 libtool 生成的共享函式庫, 其實是個設定的檔案. 可以用 file 代替
§ .la 可用 vi 來查看
§ .so 為動態函式庫, 類似 Windows 的 DLL(Dynamic-link library)檔.
§ 補充: 還有一種附檔名為 .ko 的檔案, 不過它是 Linux 核心使用的動態連結文件, 屬於模組程式, 用來在 Linux 系統啟動時, 加掛核心模組用.
.o, .a, .so, .la 如何產生
§ 建立 .o
$ gcc -c test.c
§ 建立 .a
$ ar -r libtest.a test1.o test2.o
§ 建立動態函式庫 .so
$ gcc -Wall -fpic -shared test1.c test2.c -o libtest.so
§ 鍊結函式庫
$ gcc -Wall -fpic -shared -Ltest test3.c -o libtest.so
§ 建立 .la, .la 一般會使用 Makefile 產生, 可以透過下述命令產生:
$ libtool --mode=link gcc -o libmylib.la -rpath /usr/lib –L/usr/lib –la
Ref:
https://blog.longwin.com.tw/2013/03/linux-a-so-la-library-diff-2013/
2017年4月14日 星期五
[DOS] ConEmu,多分頁的DOS模式軟體
2017年4月13日 星期四
[python] 'cp950' , illegal , UnicodeEncodeError
Traceback (most recent call last):
File "D:\3S_PC\python\3S_AUTO\FileStudy.py", line 521, in <module>
parseXML(xmlPath)
File "D:\3S_PC\python\3S_AUTO\FileStudy.py", line 496, in parseXML
print ('{}, Unexpected error:{}'.format(testName, sys.exc_info()))
UnicodeEncodeError: 'cp950' codec can't encode character '\xf1' in position 215: illegal multibyte sequence
原因:
使用 windows cmd print時會轉碼為cp950,但python使用unicode
SOL:
try:
for item in sortlistFileInfo3:
if (len(item) == 4):
print('{:<10d},{:<10d},{:<10d},{:45s},{}'.format(nIndex,
item[0],
item[1],
item[2].encode("utf8").decode("cp950", "ignore"),
item[3].encode("utf8").decode("cp950", "ignore")))
else:
print('!!!{:<10d},{}'.format(nIndex, item))
nIndex += 1
except:
print ('Show listFile3, Unexpected error:{}'.format(sys.exc_info()))
2017年4月6日 星期四
[python] format
它有着丰富的的"格式限定符"(语法是{}中带:号),比如:
填充与对齐
填充常跟对齐一起使用
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
比如
In [15]: '{:>8}'.format('189') Out[15]: ' 189' In [16]: '{:0>8}'.format('189') Out[16]: '00000189' In [17]: '{:a>8}'.format('189') Out[17]: 'aaaaa189' 精度与类型f
精度常跟类型f一起使用
In [44]: '{:.2f}'.format(321.33345) Out[44]: '321.33' 其中.2表示长度为2的精度,f表示float类型。
其他类型
主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。
In [54]: '{:b}'.format(17) Out[54]: '10001' In [55]: '{:d}'.format(17) Out[55]: '17' In [56]: '{:o}'.format(17) Out[56]: '21' In [57]: '{:x}'.format(17) Out[57]: '11' 用,号还能用来做金额的千位分隔符。
In [47]: '{:,}'.format(1234567890) Out[47]: '1,234,567,890' Ref:
http://blog.csdn.net/handsomekang/article/details/9183303
2017年3月31日 星期五
[C++] Enumerating All Processes, unresolved external symbol _GetModuleBaseNameW
#include "psapi.h"
void CdlgSSDMP::PrintProcessNameAndID( DWORD processID )
{
TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
// Get a handle to the process.
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );
// Get the process name.
if (NULL != hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
&cbNeeded) )
{
GetModuleBaseName( hProcess, hMod, szProcessName,
sizeof(szProcessName)/sizeof(TCHAR) );
}
}
// Print the process name and identifier.
_tprintf( TEXT("%s (PID: %u)\n"), szProcessName, processID );
// Release the handle to the process.
CloseHandle( hProcess );
}
REF:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms682623(v=vs.85).aspx
https://social.msdn.microsoft.com/Forums/en-US/623ba3e3-7c47-4cf0-80e8-9262f3b47e52/enumprocesses-issue?forum=Vsexpressvc
________________________________________ 3S CONFIDENTIALITY NOTICE: This message and all attachments may contain legally privileged and confidential information. Any unauthorized review, use or distribution by anyone other than the intended recipient is strictly prohibited. If you are not the intended recipient, please contact the sender immediately by replying to the message and delete all copies. Thank you.






