全面深扒國產龍芯3A3000處理器性能細節

2017年九月份龍芯俱樂部辦了一個龍芯3A主板的團購。作為多年關注龍芯的愛好者,我參加了這次團購,購買了一個龍芯3A3000的主板。鑒於目前而龍芯3A4000處理器即將流片,而目前對即將過氣的龍芯3A3000處理器的性能並沒有一個比較詳細的評測,我使用phronix-test-suite對龍芯3A3000處理器做了一個儘可能理性、中立、客觀、全面的評測,不吹不黑,不誇大成績也不迴避問題。

龍芯3A3000主板介紹

首先,還是晒晒圖,回顧一下龍芯3A3000主板的模樣。


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

圖1龍芯3A3000主板照片,風扇下面是龍芯的CPU。另外兩塊散熱片下面分別是南橋和北橋。


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

圖2拆下風扇後,龍芯3A3000 CPU的近照,其中的LS3A3000D-LP意思是說這是一個低功耗版本的龍芯3A3000CPU


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

圖3開機後BIOS中的信息,可以看到CPU的主頻是1400MHZ,一級指令緩存64KB,一級數據緩存64KB,二級緩存4MB。


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

圖4主板上的國產Unilc(西安紫光國芯半導體)內存條

我拿到的這塊龍芯3A3000處理器不是性能最高的1.5GHz主頻版本,而是性能略低的1.4GHz版本。因此,在估算龍芯3A3000(1.5GHz)的性能時,應該將我的測試結果乘以1.07。此外,需要說明的是龍芯3A3000筆記本裡帶的龍芯3A3000的主頻被限制在了1.2GHZ。

拿到主板後,參照主板手冊以及百度貼吧的手冊,另外在龍芯俱樂部群和龍芯電腦用戶和開發者群網友的幫助下,我裝了一台龍芯3A3000的主機,並安裝了Debian buster和Loongnix兩個操作系統。

作為龍芯的老粉絲,我用過福瓏6003的龍芯盒子以及8089D筆記本,兩個機器都是用龍芯2F的處理器。從個人的體驗上,使用龍芯2F的的圖形界面只能說是“能用”,真正使用起來還是太慢。龍芯3A3000的性能和龍芯2F相比有了非常大的進步,不管是Loongnix還是Debian,在使用上都可以稱得上是真正的流暢了。使用Firefox進行網頁瀏覽,觀看本地高清視頻都都十分流暢。從用戶體驗上,龍芯3A3000已經完全可以滿足辦公、上網、聽音樂、看視頻這樣的基本需求了。

龍芯3A3000處理器性能評測方案

和主流的x86處理器相比,龍芯3A3000究竟有多大差距呢?從性能上,龍芯3A 3000相當於哪一款CPU,即將流片的3A4000又相當與那個處理器?和其他國產處理器相比,龍芯3A3000的性能究竟是高還是低?

為了回答以上的問題,我使用phoronix test suite中提供的有關CPU性能的benchmark程序,對X270筆記本上的i5-7200U處理器和龍芯3A3000處理器進行了詳盡的對比。此外,openbenchmarking網站上提供了很多不同處理器性能測試的結果,可以供人們更客觀的評測系統的性能。

我在openbenchmarking網站上發現了飛騰1500A和飛騰2000+處理器的部分評測結果,在本次測試中也將對利用這些數據進行對比。作為參照,我又尋找了部分Intel J1900處理器的性能數據。

最近一段時間,兆芯處理器在性能上進步飛速,已經出了ZX-C、KX-5000以及KX-6000等多個系列的處理器,並且在網絡上也有了一些測評,但在Openbenchmarking網站上我沒有找到任何兆芯的最新處理器的蹤跡,因此在本文中無法對比兆芯和龍芯的性能了。

為了比較兩塊CPU在相同主頻下的性能差距,在測試中將Intel i5-7200U處理器的睿頻模式關掉,去掉自動降頻的電源管理,將頻率鎖定在2.5GHz。i5-7200U處理器最高可以睿頻到3.1GHz,因此其實際峰值性能比本次測試時的數據的要高。


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

在測試中,我們同時關注處理器的單核性能和多核性能。最近,兆芯KX6000系列處理器在評測中根據7zip等多線程程序的測試結果,得出KX6000性能相當於i5-7400處理器的結論,但卻有意無意的忽略了KX6000是8核8線程的處理器而i5-7400是4核4線程處理器。如果看單核性能,那麼KX6000大致相當於i5-7400的一半。

下面是本測評中的多款處理器的基本情況對比。


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

Intel i5-7200U

https://ark.intel.com/products/95443/Intel-Core-i5-7200U-Processor-3M-Cache-up-to-3_10-GHz

Intel J1900

https://ark.intel.com/zh-cn/products/78867/Intel-Celeron-Processor-J1900-2M-Cache-up-to-2_42-GHz

龍芯3A 3000

http://www.loongson.cn/product/cpu/3/3A3000.html

測試使用的是7.8.0版本的phronix-test-suite。

http://www.phoronix-test-suite.com/?k=downloads

測試分別在配備了Intel i5-7200U處理器的X270筆記本電腦以及自行組裝的龍芯3A3000電腦上進行,其中對龍芯3A3000的測試在Debian testing系統上進行。測試環境如表2所示:


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

在測試過程中,我發現了疑似龍芯實驗室使用1.5GHz的龍芯3A 3000處理器在Loognix系統上進行的部分測試結果。因此,我就不再單獨使用Loongnix系統對該處理器的性能進行測試了。

對龍芯3A3000所使用的編譯器選項,可以參考此鏈接

對部分應用,在編譯時採用了n32的abi,即增加參數-mabi=n32。

由於CPU性能是我最想了解的東西,因此在測試過程中主要關心能反應CPU性能的測試,而不考慮對磁盤、顯卡、內存等硬件的性能測試。

測試程序介紹及測試結果分析

科學計算

1. scimark2

這個測試運行了SimiMark 2.0的ANSI C版本,它是由國家標準與技術研究所的程序員開發的科學和數值計算的基準。該測試由快速傅利葉變換、雅可比逐次超鬆弛、蒙特卡洛、稀疏矩陣乘法和密集LU矩陣分解基準構成。本測試為單核性能測試。

測試結果:


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

圖5 Scimark2性能對比

測試結果如圖5所示。在圖中以龍芯3A3000(紅色)的性能為基準(1.0),i5-7200U(藍色)和J1900(綠色)的性能都與龍芯3A3000相比,數值越高性能越好。鑒於龍芯3A4000即將流片,根據龍芯方面放出的消息,龍芯3A4000相比3A3000同主頻性能提高了30%,同時主頻將從1.5GHz提高到2.0GHz。此外,龍芯3A4000還將增加256位SIMD指令,並將L3 cache從8MB增加到12MB,SPEC CPU2006的分值達到20分,達到龍芯3A3000的兩倍。

http://www.ict.cas.cn/kycg/cgnb/201709/P020170926639136974767.pdf

因此,我們以將3A4000的性能設為2.0,作為性能預測的參考。

從圖5的測試結果可以看出,在Scimark的Monte Carlo測試中,3A3000性能非常糟糕,只有i5-7200U的不到10%,甚至不到J1900的30%。這很不正常,可能有某個浮點運算沒有使用硬件浮點,而使用了軟件模擬的浮點運算。在其餘的測試中,3A3000性能均與J1900相當,部分測試性能優於J1900。J1900和i5-7200U相比,雖然其主頻也有1.99GHz,但單核性能只有i5-7200U的30%左右。

2.FFTE

FFTE是Daisuke Takahashi寫的計算1、2和3維的序列長度為(2 ^ p)*(3 ^ q)*(5 ^ r)的離散傅立葉變換的一個包。單核性能測試。

測試結果:點此訪問

3.fhourstones

解Connect-4遊戲,測試處理器的整數性能。單核性能測試。

測試結果:點此訪問

4. gmpbench

用GMP 6.1.2數學庫進行的性能測試。注意,gmpbench只考慮程序的整數性能,不是浮點性能。單核性能測試。https://gmplib.org/gmpbench.html

測試結果:點此訪問

5. minion

Minion是一個設計上具有可擴展性的開源約束求解器。單線程性能測試。

https://constraintmodelling.org/minion/

測試結果:點此訪問

6. mpcbench

GNU MPC是複數算術的C庫。單線程性能測試。

https://openbenchmarking.org/result/1806164-FO-LOONGSON301

multichase

This is a benchmark of Google's multichase pointer chaser program.單線程,多線程性能測試。

https://openbenchmarking.org/result/1806120-FO-LS3AMULTI28


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

圖6 FFTE、Fhourstone、Minion、Multichase性能測試

在以上的測試中,我們找到了兩個關於J1900的測試數據,其中ffte性能僅相當於龍芯3A3000的2/3, fhourstone性能是龍芯的1.1倍。從總體性能上看,i5-7200U在以上的性能測試是龍芯3A3000的2倍到4.5倍不等,集中分布在2.3倍左右,我們預測龍芯3A4000的單核性能在這些測試中能達到i5-7200U的85%左右。i5-7200U在gmpbench和mpcbench中測試中性能是龍芯3A3000的4.5倍左右,優勢明顯,可能與數學庫或者編譯器的優化有關。

8 Bullet

Bullet物理引擎. Bullet是一個開源的物理模擬計算引擎,世界三大物理模擬引擎之一。單線程性能測試。

https://openbenchmarking.org/result/1806126-FO-LS3ABULLE82

9. himeno

The Himeno benchmark is a linear solver of pressure Poisson using a point-Jacobi method.單線程性能測試。

https://openbenchmarking.org/result/1806127-FO-LS3A3000H21

10. tscp

這是TSCP,Tom Kerrigan的簡單國際象棋程序的性能測試,它有一個內置的性能基準。單線程性能測試。

https://openbenchmarking.org/result/1806104-FO-LS3ATSCPD75


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

圖7 Bullet、Himeno和TSCP測試

在這一組測試中,i5-7200U優勢非常明顯,除了在國際象棋性能測試TSCP上速度是3A3000的3.6倍,在其他測試中速度基本都是龍芯3A3000的4倍以上,在bullet的ragdoll測試中性能甚至達到了龍芯3A3000的30倍。我們對bullet的代碼進行了分析,發現其中有大量的SIMD相關的代碼以及針對X86處理器的彙編語言優化。這是bullet在Intel處理器下運行速度快的重要原因。而針對Ragdoll測試,我們發現代碼中有大量的三角函數運算,而龍芯目前三角函數的計算是有問題的,沒有啟用硬件浮點,而是使用的軟件模擬,因此速度較慢。

11. hpcg

高性能共軛梯度算法,由桑地亞國家實驗室開發的面向超算的科學基準程序。多線程測試。

https://openbenchmarking.org/result/1806094-FO-LS3AHPCGD08

https://openbenchmarking.org/result/1806202-FO-LS3AHPCGO04

12. npb

NPB,NAS並行基準,是美國國家航空航天局為高端計算機系統開發的基準。此測試配置文件目前使用MPI版本的NPB。多線程測試。

https://openbenchmarking.org/result/1806097-FO-LS3ANPBDE97

13. n-queens

OpenMP版本的N-皇后問題解法器。問題大小是18。多核性能測試。

https://openbenchmarking.org/result/1806109-FO-LS3ANQUEE29

14. mafft

100個丙酮酸脫羧酶序列的比對。多線程性能測試。

https://openbenchmarking.org/result/1806108-FO-LS3AMAFFT56

15. primesieve

Primesieve使用高度優化的Eratosthenes篩法實現來產生素數。Primesieve對CPU L1/L2緩存性能進行基準測試。多線程性能測試。

https://openbenchmarking.org/result/1806103-FO-LS3APRIME23


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

圖8 HCCG、NPB、N-Queens、MAFFT和Primesieve測試

以上的測試都是多線程的性能測試,HPCG測試中i5-7200U性能達到了龍芯3A3000的3.76倍。在NPB的測試中,龍芯在其中3項超過了J1900,另外兩項不如J1900。在N-皇后問題、MAFFT以及素數篩選的測試中,i5-7200U性能是龍芯3A3000的兩倍左右;如果龍芯3A4000性能能夠達到3A3000的兩倍,在這幾個測試中龍芯3A4000將能夠達到i5-7200U的性能。再次強調一下,這是多線程測試!

加密算法

16. Botan

Botan是一個跨平台的C++的開源加密庫,支持大多數的所有公開的加密算法。(單線程測試)

https://openbenchmarking.org/result/1806093-FO-LS3ABOTAN50

Gnupg

用GnuPG加密文件,統計耗時。單線程性能測試。

https://openbenchmarking.org/result/1806105-FO-LS3AGNUPG86


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

圖9 Botan和Gnupg測試

在Botan測試中,龍芯3A3000在部分項目上與i5-7200U的差距在3倍左右。在AES的加密和解密這兩個測試中,和i5-7200U有近80倍的性能差異!原因在於i5-7200U存在AES加密解密硬件實現,效率很高,而龍芯3A3000沒有這樣的功能,或者暫時無法使用該功能。此外,在Botan中同樣存在針對X86的彙編優化,在能使用到這些優化的測試中,x86處理器就非常有優勢。

多媒體編碼

18~22. encode-flac, encode-mp3, encode-ogg, encode-opus, encode-wavpack?

將音頻文件轉碼為flac,mp3,ogg,opus和wavpack,統計所需時間。

測試結果:點此訪問

espeak

這個測試需要花費多長時間的用espeak語音合成引擎讀取古騰堡項目的The Outline of Science,並輸出到WAV文件。單線程性能測試。

https://openbenchmarking.org/result/1806148-FO-LS3AESPEA06

24. dcraw

用DCRAW轉換多個高分辨率RAW NEF圖像文件到PPM圖像格式,統計所需要的時間。單線程性能測試。

https://openbenchmarking.org/result/1806140-FO-LS3ADCRAW96

25. mencoder

這個測試使用mplayer的mencoder編碼器程序和LIVAVCODEC系列來測試系統的音頻/視頻編碼性。單線程性能測試。

https://openbenchmarking.org/result/1806145-FO-LS3AMENCO12

26.Vpxenc

這是一個標準的視頻編碼性能測試,使用谷歌的libvpx庫和vpxenc命令實現VP8/WebM格式的編碼。單核性能測試。

https://openbenchmarking.org/result/1806148-FO-LS3AVPXEN59


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

圖10多媒體相關性能測試

在音視頻壓縮編碼的測試中,龍芯再次完敗於Intel處理器,不管是J1900還是i5-7200U。究其原因,還是在優化上。以上這些多媒體應用,針對x86處理器進行了大量的優化,而沒有對龍芯處理器進行優化。

壓縮算法

27. Compress-7zip

用7zip程序自帶的benchmark功能測試程序的多線程性能。

https://openbenchmarking.org/result/1806036-FO-LOONGSON337

https://openbenchmarking.org/result/1806230-FO-LS3A7ZIPL48

28. Compress-gzip

用tar程序壓縮Linux源碼包,檢驗系統自帶的gzip程序的單線程性能。

https://openbenchmarking.org/result/1806039-FO-LS3A3000G15

優化以後的gzip程序

https://openbenchmarking.org/result/1806056-FO-LS3A3000G52

29. Compress-pbzip2

用並行的bzip2算法壓縮Linux內核源碼包,統計所需時間。多線程程序。

https://openbenchmarking.org/result/1806109-FO-LS3APBZIP29

網絡應用

30. Apache

Apache基準程序,評價標準是發出100萬的請求,100個並發,看系統每秒能夠處理多少。多線程性能測試。

https://openbenchmarking.org/result/1806159-FO-LS3AAPACH45

31. ebizzy

Ebizzy測試。Ebizzy可以生成類似Web服務器的工作負載。

https://openbenchmarking.org/result/1806152-FO-LS3AEBIZZ72

32. postmark

這是一個測試NETAPP的POSTMARK基準測試,旨在模擬類似於Web和郵件服務器所承受的任務的小文件測試。此測試配置文件將設置POSTMARK以同時執行500個文件的25000個事務,文件大小介於5到512千字節之間。

https://openbenchmarking.org/result/1806151-FO-LS3APOSTM75


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

圖11壓縮算法和網絡應用測試

從以上的測試結果可以看出,在壓縮算法以及網絡應用上,龍芯3A3000和J1900性能接近。和i5-7200U處理器相比,差距也在有兩倍左右。需要指出的是,除了gzip是單線程測試,其餘的測試都是多線程測試。

內存測試

33. Cachebench

這是Calebench的性能測試,它是LLCBench的一部分。Cachebench是用來測試內存和緩存帶寬性能的。

https://openbenchmarking.org/result/1806034-FO-LS3A3000C27

34. stream

系統內存(RAM)性能基準測試。

測試結果:點此訪問


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

圖12訪存性能測試

在stream測試和CacheBench測試中,龍芯3A3000終於實現了對J1900的全面優勢。另外,除了在Cachebench中有兩項數據明顯若與i5-7200U,在其他測試內容中龍芯3A3000和i5-7200U性能相當。能有這樣好的性能,還是因為龍芯處理器歷史上因為訪存性能太差深受其害,然後花了很大的力氣優化了訪存。可以期待龍芯3A4000一樣會有較好的訪存性能。

最後,根據openbenchmarking網站上找到的部分FT1500A和FT-2000+的數據,和龍芯3A3000進行了對比。


IT之家網友投稿:全面深扒國產龍芯3A3000處理器性能細節

(點此可查看大圖▲)

基本上,龍芯3A3000的性能強於FT1500A,但明顯弱於FT-2000+。和FT1500A相比,FT-2000+性能有了很大的提升,部分得益於工藝的改進,從28納米提升到了16納米;部分得益於架構的更新。我們預測,龍芯3A4000在繼續使用28納米工藝的前提下,將能夠在單核性能上追平甚至超越飛騰2000+處理器。由於飛騰2000+處理器有多達64個核,龍芯要在多核性能追趕飛騰還有很長的路要走。

3A3000在Monte Carlo模擬上性能意外的糟糕,很可能是某關鍵函數缺少優化。

總結與展望

從縱向上看龍芯的發展,相比龍芯2F,龍芯3A3000的性能有了很大的進步。工藝上,從龍芯2F的90nm,提高到了龍芯3A3000處理器的28nm;主頻從龍芯2F的800MHZ提高到了1.5GHz。在用戶實際應用上,基本可以達到流暢使用的程度。與Intel處理器相比,龍芯3A3000綜合性能相當於Intel J1900處理器,單核性能相當於intel i5-7200U的30%~40%。

通過本文中所進行的34項測試,我們發現龍芯3A3000在性能不好的根源有以下幾個:

同主頻性能較弱。從同主頻性能來看,龍芯3A3000已經超過了J1900,但只有intel i5-7200U的60%~70%。預計2019年流片的龍芯3A4000同主頻性能至少有30%的性能提升。

主頻太低。這是龍芯處理器讓眾多愛好者耿耿於懷的的一個難以迴避的弱點。誠然,主頻不代表所有性能,但主頻太低是萬萬不行的。J1900的同主頻性能弱於龍芯3A3000,但由於它的主頻可以到1.99GHz,並且還可以睿頻到2.4GHz,在多項測試中一樣超過了龍芯3A3000。Intel i5-7200U基礎主頻達到2.5GHz,睿頻可以到3.1GHz。飛騰2000+主頻可以到2.2GHz,而兆芯的KX-6000主頻甚至可以到3.0GHz。飛騰、兆芯處理器可能在同主頻性能上弱於龍芯,但還是可以靠着較高的主頻擊敗龍芯3A3000。

龍芯主頻較低的原因之一是落後的工藝製程,目前還在使用28nm工藝,而Intel、飛騰、兆芯等已經在使用14nm工藝。根據龍芯的發展規劃,到2020年龍芯將使用14nm工藝對了龍芯3C5000進行流片,主頻能夠達到2.5GHz。

系統軟件優化不夠。在測試中,我們發現的問題有三角函數等數學函數運算速度過慢,看起來部分硬件浮點運算的沒有得到應用,而且龍芯缺少一個優化的數學函數庫。在加密解密指令上,缺少AES硬件實現。在測試中,我們發現使用Debian操作系統、GCC 7.3和1.4GHz的龍芯3A3000進行的各項測試基本優於使用Loongnix操作系統、GCC 4.9編譯器和1.5GHz龍芯3A3000的組合。我們認為編譯器的優化對發揮龍芯的性能非常重要。在測試中,我們也發現使用4.14的Linux內核會比3.10的Linux內核上有相當程度的性能提升,龍芯依然缺少優化的Linux內核。

應用軟件優化不夠。由於MIPS架構缺少軟件生態,各種應用軟件缺少針對MIPS架構的優化。具體表現就是在很多軟件有針對X86系統的彙編優化。要建立龍芯的生態,發揮龍芯處理器的性能,相同級別的優化不可缺少。

隨着龍芯未來架構的優化、主頻的提升,影響龍芯發展的瓶頸將不是處理器的性能,而是軟件生態的建設,也就是系統軟件優化以及應用軟件優化。其中,各種應用軟件的優化將是提升龍芯用戶體驗的捷徑。實際上,龍芯也已經意識到了這些問題,提出了要學習蘋果,”app by app, feature by feature, pixel by pixel”的進行優化。

當下,龍芯3A4000的流片工作正在開展,預計到2019年初就能看到芯片了。在3A4000出現之前,我們對3A4000的性能進行一下預測。基於我們的評測,我們認為,3A4000的同主頻性能將從i5-7200U的60%~70%,提升到80%~90%,2.0GHz下單核性能達到i5-7200U的2/3,多線程性能超過i5-7200U。和國內其他CPU相比,龍芯3A4000的同主頻性能將超過飛騰以及兆芯,單核性能也將超過飛騰2000+,但由於3A4000落後的28 nm工藝、依舊較低的主頻(2.0 GHz),龍芯3A4000的綜合性能將可能依舊無法超過主頻3.0GHz的兆芯KX-6000。如果2019年兆芯KX-6000不能大規模量產上市,龍芯3A4000還是有可能成為2019年國內可以買到的單核性能最強的國產自主處理器。

龍芯處理器和Intel、AMD的高性能處理器差距還是非常巨大,龍芯要走的路還很長。期待龍芯在未來採用更好的工藝,更優化的微架構,也期待龍芯能夠在編譯器、數學庫、操作系統等系統軟件支持上有更好的表現,構建更好的應用軟件生態系統,期待着龍芯3A4000、3B 4000、龍芯3C 5000早日流片成功。

以上的評測只是一個非計算機專業的普通愛好者個人所為,不具有權威性,水平有限,時間倉促,數據繁多,有錯誤和疏漏在所難免,還請批評指正。

以毛主席的話,結束我的測評:

“我們正在前進。我們正在做我們的前人從來沒有做過的極其光榮偉大的事業。我們的目的一定要達到。我們的目的一定能夠達到。”

附錄

各種測試結果匯總

龍芯3A 3000(Loongnix):

https://openbenchmarking.org/result/1806113-TR-LSLABSLS380

https://openbenchmarking.org/result/1709288-TR-LOONGSON390

FT1500A :

https://openbenchmarking.org/result/1705187-KH-CPUSCIMAR08

I5-7200u

https://openbenchmarking.org/result/1806175-FO-I57200UDE18

https://openbenchmarking.org/result/1806174-FO-I57200UMU24

https://openbenchmarking.org/result/1806175-FO-I57200URA38

https://openbenchmarking.org/result/1806176-FO-I57200UCO93

https://openbenchmarking.org/result/1806179-FO-I57200UCR30

J1900

https://openbenchmarking.org/result/1404256-PL-1404206PL73

https://openbenchmarking.org/result/1404250-PL-1404206SO61

https://openbenchmarking.org/result/1404268-PL-J1900MULT15

https://openbenchmarking.org/result/1404272-PL-J1900SPEE11

https://openbenchmarking.org/result/1404275-PL-J1900PROC21