【汽車安全】多核AI處理器的ISO 26262功能安全設計
內容提要:我們提出了一種采用STC和統一內核/功能內存的AI處理器,以提高吞吐量,同時提高數據可重用性。此外,AI處理器還包括具有自恢復緩存和DLS的功能安全設計,并運行幀內、幀間功能以確保STC的功能安全。
摘要
本文的AI處理器架構吞吐量高,可用于加速神經網絡,并減少處理神經網絡所需的外部存儲器帶寬。為了實現高吞吐量,所提出的超線程核(STC)包括128×128個納米核,工作時鐘頻率為1.2 GHz。功能安全架構是為容錯系統(如自動駕駛汽車的電子系統)提出的。通用處理器(GPP)內核與STC集成,用于控制STC和處理AI算法。它具有自恢復緩存和動態鎖步功能。功能安全設計已證明故障性能具有ISO 26262標準容錯等級的ASIL D。因此,整個AI處理器作為原型芯片通過28納米CMOS工藝制造。其峰值計算性能為40 TFLOPS,頻率為1.2 GHz,電源電壓為1.1 V。測得的能效為1.3 TOPS/W。采用功能安全設計的控制GPP可以達到ISO 26262 ASIL-D級別,單點容錯率為99.64%
1.簡介
人工智能(AI)處理器用于加速AI算法,這些算法用于自動駕駛汽車中的障礙物識別和控制。必須為自動駕駛汽車開發AI處理器。特斯拉的全自動駕駛(FSD)芯片采用專用硬件設計,可以加速AI算法,用于在自動駕駛汽車中執行物體識別,并進行功能安全設計,以便在容易出錯的環境中運行。兩個FSD芯片用于處理八個攝像頭輸入,每個輸入識別周圍環境并識別道路上的障礙物。根據ISO 26262標準分析了所提出的容錯功能的性能,該標準旨在保證在車輛電氣系統故障產生的危害導致不合理風險的情況下實現功能安全。
在汽車應用中,處理器需要具有容錯功能,以防止由于電壓波動、溫度大幅變化和暴露于粒子輻射而導致的瞬態故障。此外,安裝在車輛上的高級駕駛輔助系統(ADAS)處理器在運行中應極其堅固和穩定,以保證安全性和便利性。
根據ISO 26262的SEooC分析具有容錯功能的處理器的功能安全性。SEooC是針對特定車輛級應用而開發的安全元素。在SEooC集成期間確定其假設的有效性時,就可以用于多個項目。軟件和硬件組件的鑒定解決了根據ISO 26262開發的項目的已有元素的使用問題。這些組件不一定是為可重復使用而設計的,也不一定是根據ISO 26262開發的。半導體必須與車輛系統一起進行分析,并且必須在系統級別定義功能安全要求(FSR)和技術安全要求(TSR)。由于處理器不能與車輛級應用程序一起進行分析,因此功能安全作為SEooC進行分析。
在失效模式影響分析(FMEA)中,觀察失效模式和失效模式的影響。失效模式是元素或項目發生故障的方式。它是使用子模塊發現的,并且使用區域中的故障率發現影響。因此,單點故障率和面積的乘積越大,發生失效的頻率就越高。我們可以使用通過FMEA分析的故障監控系統來減少處理器中失效模式的影響,以確保安全機制(SM)。
硬件單點故障指標(SPFM),是使用基本故障率(BFR)計算得出的,BFR是使用IEC 62380標準、安全故障分數和診斷覆蓋率計算得出的,診斷覆蓋率是使用實施的安全機制(SM)檢測或控制的硬件元件失效率的比例。我們假設子模塊中沒有安全故障。根據這一假設,SPFM很低。診斷覆蓋率通過故障注入實驗解決。
此外,ISO/PAS 21448用于自動化系統功能安全的標準化。ISO 26262標準解決了在E/E系統故障導致不合理風險的情況下的車輛安全問題。ISO 26262的其他部分提供了要求和指導,以避免和控制可能違反安全目標的隨機硬件失效和系統失效。對于某些依賴于感知環境的系統,由于ISO 26262中定義的無故障系統的預期功能存在限制,可能會出現安全違規。此類安全違規包括功能無法正確理解場景并安全運行;不存在此類安全違規被定義為預期功能的安全性(SOTIF)。降低SOTIF風險的措施包括使用機器學習算法的功能,因為系統對于傳感器輸入變化或多樣化環境條件的魯棒性不足。這些措施對于在設計、驗證和確認階段解決SOTIF非常重要。
所提出的AI處理器架構具有兩個顯著特點。首先,它具有高吞吐量,可以加速神經網絡。其次,它減少了處理神經網絡所需的外部存儲器數據帶寬。
為了實現高吞吐量,AI處理器具有一個超線程核心(STC),其中包括128×128個納米核(NC),以1.2 GHz的時鐘頻率運行。NC是帶有執行單元的處理器核心,用于處理CNN、RNN和FCN。在STC中,集成了16384個NC,在正常情況下以1.2 GHz的頻率運行。
通常,AI處理器會從外部存儲器重復讀取神經網絡的內核和特征數據來處理神經網絡。這意味著需要較高的外部存儲器數據帶寬。因此,提出了一種用于內核和特征數據的統一存儲器,以減少所需的外部存儲器數據帶寬。
建議的存儲器大小為40 MB,具有3×256位AXI主端口和1×256位AXI從端口,以及256個讀寫端口,用于以1.2 GHz時鐘頻率運行的STC。該存儲器的一個突出特點是存儲從外部存儲器讀取的特征和內核數據。存儲的數據可以在不訪問外部存儲器的情況下重復使用。這有助于提高操作強度。
此外,AI處理器還可以通過電源門控功能為運行中的16384個NC供電。當在統一存儲器上讀寫數據和指令時,可以通過電源門控關閉所有NC。統一存儲器有4 MB的電源門控和32 KB的睡眠模式,以降低峰值功耗。
針對容錯系統,如自動駕駛汽車的電子系統,提出了一種功能安全的架構。通用處理器(GPP)內核與STC集成以控制STC并處理AI算法,并具有自恢復緩存和動態鎖步(DLS)功能。
DLS具有鎖步模式,用于控制STC和AI算法的預處理和后處理的容錯功能,以及雙核模式,以實現高性能。自恢復緩存可以發現緩存的故障,并利用緩存的特性恢復故障。
在本文中,我們使用ISO 26262第二版標準中提出和采用的故障注入系統來證明功能安全架構的故障性能符合ISO 26262標準汽車安全完整性等級(ASIL) D。與傳統的雙模塊冗余(DMR)和容錯緩存相比,所提出的架構還提供了卓越的容錯能力。在符合ISO/PAS 21448的此類中沒有安全違規的情況下,對設計方案進行了功能修改以降低SOTIF風險。我們設計了幀間和幀內安全措施,這是一種針對多種傳感器技術的SOTIF改進措施,并通過使用功能限制來提高識別和決策算法的性能以減輕SOTIF風險。然后,我們設計了基于深度學習算法的功能安全處理器來處理圖像數據。本文的其余部分組織如下:第2節詳細介紹了所提出的架構;第3節解釋其安全特性;第4節提供了符合ISO 26262和ISO/PAS 21448的故障分析以及實施結果;結論在第5節中給出。
2. AI處理器
2.1 多核架構
該處理器包括一個具有128×128 NC的STC、40 MB統一內核和功能內存、2個GPP內核、2個功能安全處理器內核、一個16通道PCIE Gen3和一個2通道LPDDR4控制器,如圖1所示。

圖1.AI處理器總體架構
為了實現處理人工智能算法的高計算吞吐量,人工智能處理器具有多核架構的STC。STC包含128×128個處理核心,稱為NC。處理核心的工作頻率為1.2 GHz。人工智能處理器包括一個內核和功能存儲器,用于讀取必須在處理核心上運行的運行數,以及一個指令存儲器,用于存儲必須在處理核心上運行的指令。此外,還有一個流控制單元來控制內核數據、功能數據和指令的流動。此外,流控制單元還通過片上總線從外部存儲器讀取指令、功能數據和內核數據,并使用直接存儲器訪問控制器將它們寫入功能存儲器、內核存儲器和指令存儲器。使用128×128處理核心,可以在1個時鐘周期內執行兩次16位浮點運算(即乘法和累加),實現半浮點精度40 TFLOPS的最大性能,如下所示:

此外,處理核心NC能夠執行核運算、批量歸一化、偏差、縮放、池化、平均池化和激活函數(如整流線性單元(ReLU)、泄漏ReLU、最大池化、加載指令和重組層)的算法,如圖2所示。使用28納米技術節點,設計了具有16384個NC的處理核心,其芯片面積為20000 μm×15000 μm。從處理核心訪問特征存儲器和內核存儲器時,數據和控制信號可以到達所需目的地,線路延遲高達35000 μm。從流控制單元訪問特征存儲器和內核存儲器時,數據和控制信號也具有較長的線路延遲。因此,特征存儲器、內核存儲器、指令存儲器和處理核心使用具有脈動數據和指令傳輸的網狀拓撲連接,以防止由于存儲器和處理核心之間的通信延遲而導致性能下降。

圖2.納米核框圖
2.2 可編程性
為了解釋處理核心的運行,我們在圖3中描繪了包含128×128處理核心的AI處理器架構。

圖3.超級線程核心框圖
處理核心需要兩個數據和一個指令才能運行,這兩個數據分別成為特征數據和內核數據,在用于這些指令和數據的各個處理核心附近的存儲器不存在,而是由指令存儲器、特征存儲器和內核存儲器提供。特征存儲器位于處理核心陣列每行左側,內核存儲器由處理核心陣列每垂直行上方的內核存儲器提供。
提供的內核數據在每個時鐘周期通過處理核心傳送到下方的處理核心,相反,垂直行中相鄰的處理核心會按順序接收相同的內核數據,但會延遲一個時鐘周期。提供的特征數據在每個時鐘周期通過處理核心傳送到右側的處理核心,相反,水平行中相鄰的處理核心會按順序接收相同的特征數據,但會延遲一個時鐘周期。
128×128 STC中只有一個指令存儲器。指令存儲器中的指令首先傳送到128×128 STC最右邊和最上面的NC,然后在每個時鐘周期通過處理核心傳送到下邊和右邊的NC。因此,一條指令被傳送到所有128×128 NC;然而,指令傳送到每個NC的時間是不同的。此外,使用指令計算的內核數據和特征數據是不同的;但是,所有NC都執行相同的指令。
通常在CNN中執行的卷積矩陣運算被重構,以便使用所提出的AI處理器進行高效計算。如圖4所示,H×W×N維的輸入特征圖(IFM)和K×K×N維的M×3D核矩陣(K3D0至K3DM-1)的卷積矩陣運算產生W/step×H/step×M維的輸出特征圖(OFM)。輸出特征圖的一個像素是輸入特征圖中的K×K×N個像素與M個核中的一個進行卷積運算的結果。因此,卷積運算在 OFM 的維度內重復進行。

圖4.采用多核架構的卷積層的專用矩陣
在這個專門的矩陣運算中,重復的IFM像素的{W/step×H/step} × {K×K×N}矩陣與K3D0到K3DM-1的 {K×K×N} ×M矩陣的乘積等于{W/step×H/step} ×M,得到OFM矩陣。
矩陣{W/step×H/ step}×{K×K×N} 的一行與矩陣K×K×N}×M的一列的乘積等于{W/step×H/step} ×M,成為OFM矩陣的一個元素。
矩陣{W/step×H/step} × {K×K×N}的一行變成由K×K×N個元素組成的向量,向量的數量就是用一個核可以獲得的OFM元素的數量。
3.容錯功能
3.1 通用處理器
STC包含16384個NC。由于冗余內核,將許多內核轉移到傳統的容錯架構(基于DMR的結構)中,面積顯著增加。因此,考慮到執行神經網絡算法時并不總是使用16384個NC,因此使用軟件作為執行DMR的方法來實現容錯功能。如果性能沒有下降,兩組NC將針對DMR功能運行相同的AI算法。此外,該軟件在GPP中執行,以便GPP執行容錯功能。
隨著電壓波動、工作溫度升高和時鐘頻率增加,芯片多處理器(CMP)越來越容易受到瞬態錯誤、硬錯誤、制造缺陷和工藝變化的影響。為了執行錯誤檢測和恢復,基于DMR的CMP在另一個內核上運行具有冗余執行的程序。此外,該技術還通過以下進步得到了發展:(a)冗余執行與同步多線程(SMT)和恢復功能的結合。最近轉向更多片上線程上下文的趨勢導致了具有線程支持的大型核心的開發。(b)增加了用于比較前導線程和尾隨線程的控制邏輯。(c)補償緩存中瞬態錯誤的脆弱性。在我們提出的方法中,緩存系統占用了處理器面積的三分之二,是處理器中具有PVT變化的易受攻擊的塊。因此,緩存系統需要容錯功能。
為了設計容錯緩存系統,糾錯碼(ECC)是一種有吸引力的瞬態錯誤檢測和糾正方法。然而,ECC的冗余存儲器會顯著影響成本,并且由于包括錯誤代碼的存儲器,可能會通過增加芯片尺寸來增加瞬態錯誤率。
我們開發了一個GPP。該處理器具有13個流水線階段,采用雙發射超標量架構;一個最多可提取8條指令的提取調度器;一個帶有分支目標緩沖區的分支預測器,該緩沖區使用帶分支歷史寄存器的GSHARE方法;一個具有兩個流水線階段的加載和存儲單元;一個具有三個流水線階段的I/D緩存;以及一個I/D表后備緩沖區。它在28納米節點上以1.2 GHz的頻率運行,為人工智能應用提供足夠的計算能力。在處理器中,緩存系統占用了處理器面積的70%;因此,需要對其進行容錯設計,以防止由于電壓下降和高溫產生的瞬態錯誤導致緩存中的存儲器內容發生變化。
在本研究中,我們提出了一種用于處理器的容錯緩存系統。與介紹的ECC相比,該緩存系統的冗余存儲器更小,因此在使用所提出的機制時,瞬態錯誤率會降低,從而提高錯誤恢復率。所提出的機制考慮了數據緩存特性,并重新配置緩存中的存儲器,以防止出現嚴重和永久性故障,而無需使用地址交織技術。
此外,我們還介紹了具有DMR的處理器,該處理器具有獨立的時鐘和電源,可與緩存一起工作,其中包括自恢復功能和錯誤預測。獨立的時鐘和電源可防止由單個特定事件或根本原因導致兩個或多個電路的相關失效。DMR和自恢復功能可檢測發生一次并隨后消失的瞬態故障。執行錯誤預測可防止發生永久性故障并一直持續到它們被移除或修復為止。
包括具有容錯功能的GPP在內的AI平臺克服了自檢的低故障覆蓋率,以及由于自檢時間而產生的性能開銷。分析表明,所提出的容錯處理器符合ISO 26262。AI處理器SoC包括兩個帶有32 KB緩存的內核,并使用DLS和自恢復緩存實現功能安全。該處理器與128×128處理內核協同工作。有研究所提出的容錯處理器包含兩個關鍵特性:(a)具有獨立時鐘和電源的DLS,以減少相關失效或實現高性能;(b)具有自恢復功能的緩存,以減少瞬態故障的發生,以及可重構功能,以減少永久性故障的發生。
如今,汽車應用的半導體必須符合ISO 26262標準才能實現功能安全。ISO 26262標準保證了功能安全,消除了由于車輛電氣系統故障產生的危害而導致的不合理風險。輻射、噪聲以及電壓、電流和溫度的變化都會引起故障。故障會導致半導體中的邏輯和觸發器失效。需要處理器和緩存來防止汽車故障和車輛危害。
3.2 動態鎖步
該設計在以下兩種模式之一下運行:DLS模式和非DLS模式。運行模式通過軟件編程確定,如圖5所示。當兩個處理器的DLS寄存器都被軟件啟用時,處理器在DLS模式下運行,或者當兩個處理器的DLS寄存器都被軟件和錯誤預測器禁用時,它們在非DLS模式下運行。

圖5.DLS模式和非DLS模式
在DLS模式下,一個處理器作為主核運行,而另一個處理器作為從核運行。此外,主核的工作頻率高于從核。工作頻率之間的差異導致臨時冗余,如圖3所示。
兩個處理器通過使用EFTM控制其核心ID來執行相同的任務。值得注意的是,當處理器核心請求寫入數據緩存時,EFTM會停止數據緩存,如果從核的緩存寫入與主核的緩存寫入相似,則啟動主核和從核的數據緩存。但是,如果兩者的緩存寫入不同,EFTM會生成故障信號。SDRAM中的數據不會被從核更改,因為它們已寫入數據緩存中;但是,從核中數據緩存的臟位未啟用。
相反,數據由主核更改,從核只能讀取數據。使用緩存寫入的檢查點的頻率足以識別處理器的故障。此外,為了使前核心和后核心保持相同的狀態,EFTM接收核心0的中斷,并使用每個處理器的提取指令計數,將其發送到處于相同處理器狀態的核心。外設的狀態不會因重復訪問而改變,只有前核心可以讀取外設并將數據傳輸到后核心。
當非DLS模式值存儲在DLS寄存器中時,EFTM將核心設置為非DLS模式。每個核心的中斷信號按原樣傳輸到每個核心。此外,還分配了不同的核心ID,以便可以執行不同的軟件。
在非DLS模式下,兩個處理器都像傳統的雙核處理器一樣運行;因此,它們通過在每個處理器上動態運行不同的任務來提高吞吐量,如圖3所示。
3.3 自恢復緩存
處理器使用FTM檢測瞬時故障并從緩存中的故障中恢復。FTM重新配置處理器以抵御永久性故障,并重新啟動處理器以恢復并避免永久性故障,方法是:1)運行恢復機制,使用低級緩存和SDRAM以及緩存的特性恢復緩存中的數據或重置系統;2)監控兩個處理器內核的加載和存儲單元,通過比較兩個處理器內核的緩存寫入來檢測故障,并使用恢復模塊進行恢復。
符合ISO 26262標準的半導體具有針對永久性故障的容錯設計。該設計包括磨損預防和內置自檢;多核鎖步和部分檢查器,用于瞬態故障;以及針對相關故障的容錯設計。通過FMEA、故障樹分析、定性分析和故障注入分析和驗證了針對瞬態、永久性和相關失效的容錯設計。
為了符合ISO 26262標準,我們定義了危害分析和風險評估,識別包括擬議半導體在內的車輛系統中必須預防的危害和危害事件,并為每個危害事件制定安全目標,為每個安全目標制定ASIL。通過根據ISO 26262-10進行分析,證明了車輛系統對FSR和TSR的滿足符合ASIL標準。
3.4 幀內、幀間特征
圖6描繪了GPP中128×128處理核心的功能安全機制。

圖6.幀內安全框圖
幀內安全機制要求DMR使用STC中的batch模式對同一幀進行兩次處理,以檢測幀處理結果中的故障。frame_0_s0是以前導幀的特征集為輸入的batch,frame_0_s1是以尾隨幀的特征集為輸入的batch,其編號與前導幀相同。如果層數相同,則前導幀和尾隨幀的kernel相同。將前導幀的yolov2計算結果與尾隨幀的結果進行比較,如果前導幀的結果與尾隨幀的結果不同,則運行幀間安全機制,判斷結果的差異是否為彈性故障。
幀間安全機制是當前導幀的結果與尾隨幀的結果不同時,使用SOTIF策略比較當前幀與前一幀的結果。當前一幀結果與當前幀結果之間的差異小于預定義閾值時,使用前后幀之間差異較小的幀的結果。但是,當前一幀結果與當前幀結果之間的差異大于閾值時,不使用當前幀的結果。閾值是使用每幀汽車與障礙物之間的合理距離和速度計算的。將識別出的最大物體數與識別百分比進行比較。
4.驗證
4.1 芯片實現
提出的AI處理器如圖7所示。AB9芯片照片占用494 mm2,采用28 nm 12金屬CMOS技術,兩個輸入NAND等效門數為1 B,片上SRAM為40 MB。該芯片包括一個具有128×128 NC的STC、40 MB統一內核和功能存儲器、2個GPP內核、2個功能安全處理器內核、一個16通道PCIE Gen3和一個2通道LPDDR4控制器。芯片規格總結如下。該AI處理器的峰值功率為30 W,電源電壓為1.05 V至-1.15 V,工作頻率為600 MHz至1.2 GHz。對于40 TFLOPS的峰值性能,該AI處理器在目標應用中實現了1.3 TOPS/W的能效和65.8 GOPS/mm2的面積效率。

圖7.芯片占用空間
4.2 實驗板
SoC板包括一個AI處理器、16通道PCIE gen3接口、四個8GB LPDDR4組件、視頻輸入芯片和視頻輸出芯片,如圖8所示。該板通過攝像頭接收圖像、識別圖像并將其輸出到顯示器。使用NN編譯器創建的程序和內核數據使用片上調試器下載。

圖8.故障注入實驗環境
使用NN編譯器創建包含神經網絡描述和權重信息的STC文件,以及包含硬件設置的CFG文件。使用GPP編譯器編譯應用程序(例如帶有STC文件和CFG文件的darknet.c)并將其下載到DRAM。隨后,使用片上調試器運行GPP。然后,應用程序接受攝像頭輸入并將攝像頭輸入輸出到顯示器。隨后,將STC指令、特征數據和內核數據移動到STC中的指令存儲器、特征存儲器和內核存儲器,并運行yolov2。執行結果與對象定位、對象類別和置信度一起顯示在顯示器上。Yolov2的性能約為68 fps。通過攝像頭(索尼)接收1280×720視頻輸入,并由內部視頻輸入模塊以416×416圖像大小存儲在DDR4中。此外,AI處理器使用PCIE接口進行通信,并通過主機PC進行控制和驗證。
通過使用PCIE,兩個包含一個AI處理器的板可以進行通信,因此可以劃分和執行Yolov2算法。圖中,Yolov2的某些層在AI處理器板#0上執行,其他層在AI處理器板#1上執行。識別結果顯示,對象類別和置信度出現在監視器上,以顯示主機PC的識別結果。
4.3 符合ISO 26262的性能
在符合ISO 26262作為SEooC的故障分析的基礎上,我們制定了安全手冊,包括FMEA、永久故障的硬件指標、基于TSR的故障注入的故障覆蓋率以及SM。
我們的SM是故障監控系統。當應用SM時,我們可以通過使用故障注入器來查找故障率。如圖6所示,我們的SM包括故障監測系統,永久性故障的單點故障指標為99.64%,永久性故障的潛伏故障指標為93.23%。我們的設計可以達到ISO 26262的ASIL D,其中SPFM超過90%。
神經網絡yolov2、yolov3、MLP和LSTM的性能如圖9所示。由于yolov2的conv1層具有208×208×32的輸出特征矩陣,因此所有128×128 NC都會同時激活。但是,由于yolov2的第30層具有13×13×425的輸出特征矩陣,因此所有128×128 NC并非同時激活,因此yolov2的有效性能是40 TFLOPS的32.8%。

圖9.AI處理器性能
圖9將所提出的架構與Google TPU v1架構進行了比較。所提出的以40 TFLOPS運行的16位浮點結構具有154 GFLOPS的激活運算符和規范化/池化運算符。從內部存儲器到NC的數據帶寬為307 GB/s,在提供權重時相同。主機接口和內部存儲器之間的數據帶寬為22.4GB/s。最后,雙通道LPDDR4具有41.6GB/s的外部存儲器帶寬。與Google的TPU版本1相比,所提出的處理器的內部通信帶寬更高,當16位浮點運算是8位整數運算的四倍時,其峰值性能也更高。
使用SoC板上的故障注入來分析瞬態故障。與以前的研究相比,所提出的容錯架構具有高故障覆蓋率和低開銷的容錯性能,如圖9所示。
5.結論
我們提出了一種采用STC和統一內核/功能內存的AI處理器,以提高吞吐量,同時提高數據可重用性。此外,AI處理器還包括具有自恢復緩存和DLS的功能安全設計,并運行幀內、幀間功能以確保STC的功能安全。
AI處理器采用28納米CMOS工藝制造,作為原型芯片,并在FPGA板上成功驗證。該芯片的芯片面積為498mm2,包含1 B邏輯門和40 MB片上SRAM。在電源電壓為1.1 V時,其峰值計算性能為1.2 GHz時的40 TFLOPS,能效為1.3TOPS/W。提出的AI處理器平均使用了64%的NC,擁有40MB的統一內存用于存儲內核和特征數據,有效性能達到20.5 TFLOPS。
與Google TPU相比,它可以占用可同時存儲內核數據和特征數據的大內存,因此可以提高執行MLP和LSTM時的有效性能。通過40 MB內存讀取大量LSTM的輸入特征數據,同時執行LSTM操作。通過提高數據可重用性可以增加運行強度,從而減少外部存儲器帶寬。同時,具有功能安全設計的控制GPP可以達到99.64%的單點容錯率。

詳詢“牛小喀”微信:NewCarRen

詳詢“牛小喀”微信:NewCarRen
作者:牛喀網專欄作者
牛喀網文章,未經授權不得轉載!
