彭曉暉 張星洲,2 王一帆,2 朝 魯,2
1(中國(guó)科學(xué)院計(jì)算技術(shù)研究所 北京 100190) 2 (中國(guó)科學(xué)院大學(xué) 北京 100190) (pengxiaohui@ict.ac.cn)
隨著接入網(wǎng)絡(luò)的設(shè)備日益增加,數(shù)據(jù)規(guī)模也呈爆發(fā)式增長(zhǎng)[1].現(xiàn)有的物聯(lián)網(wǎng)采用的是云計(jì)算模式,海量數(shù)據(jù)傳輸?shù)皆贫擞?jì)算加重了網(wǎng)絡(luò)傳輸和云端的計(jì)算負(fù)載.傳統(tǒng)的計(jì)算模式無(wú)法滿足海量數(shù)據(jù)大規(guī)模傳輸和計(jì)算、以及即將到來(lái)的人工智能時(shí)代應(yīng)用大量爆發(fā)的需求[2].為了解決以上問(wèn)題,研究者提出了邊緣計(jì)算,它是將云端計(jì)算負(fù)載部分移到設(shè)備端的一種新分布式計(jì)算模式[3-4].該模式的計(jì)算行為發(fā)生在數(shù)據(jù)源到數(shù)據(jù)中心路徑的任意網(wǎng)絡(luò)和計(jì)算資源上.相比于云計(jì)算,邊緣計(jì)算模式能夠提供更加高效的數(shù)據(jù)訪問(wèn)和計(jì)算,減少云服務(wù)器計(jì)算負(fù)載和網(wǎng)絡(luò)傳輸負(fù)載,同時(shí)能提供更加實(shí)時(shí)的控制和反饋,以及提高邊緣計(jì)算系統(tǒng)[5]應(yīng)用程序的服務(wù)質(zhì)量和系統(tǒng)可靠性.
邊緣計(jì)算也常常被稱為霧計(jì)算[5-6].文獻(xiàn)[5]定義邊緣計(jì)算為“網(wǎng)絡(luò)邊緣執(zhí)行計(jì)算的一種新型計(jì)算模型”,其核心理念是如何利用接近數(shù)據(jù)源的計(jì)算資源執(zhí)行計(jì)算任務(wù),并未嚴(yán)格界定所涉及的設(shè)備類型,理論上需要考慮從數(shù)據(jù)生產(chǎn)端到處理端之間(不包括兩端)的任一設(shè)備.如圖1所示,從物端到云端完整設(shè)備鏈中有大量類似于傳感器、控制器等分布在環(huán)境中設(shè)備被邊緣計(jì)算概念所忽視,這類設(shè)備面向物理世界,多具備物理功能,我們可稱之為物端設(shè)備.這類設(shè)備多數(shù)具有資源受限的特點(diǎn),但仍具備不可忽視的計(jì)算能力,離物理環(huán)境和用戶近的特點(diǎn)使其具有一定的計(jì)算優(yōu)勢(shì).因此,我們?cè)谶吘売?jì)算的基礎(chǔ)上進(jìn)行相關(guān)概念延展和聚焦研究,我們提出了以物端設(shè)備為主的分布式計(jì)算系統(tǒng)和物理環(huán)境,稱為物端計(jì)算系統(tǒng).
Fig. 1 The relationship between edge computing system and things computing system圖1 邊緣計(jì)算系統(tǒng)與物端計(jì)算系統(tǒng)的關(guān)系示意圖
鑒于現(xiàn)代Web系統(tǒng)的靈活性和可伸縮性優(yōu)點(diǎn),物端計(jì)算系統(tǒng)也需要全面的Web使能的支持.在本文進(jìn)一步研究中,我們將設(shè)備依照Web使能能力進(jìn)行劃分,即強(qiáng)Web使能設(shè)備和弱Web使能設(shè)備.強(qiáng)Web使能設(shè)備包括服務(wù)器、PC、手機(jī)、智能電視等,可原生運(yùn)行完整的操作系統(tǒng)及現(xiàn)代Web的全棧協(xié)議(TCP/IP協(xié)議族).而弱Web使能設(shè)備,如部分傳感器、可穿戴設(shè)備、智能硬件等,由于資源受限,不能支持完整的原生網(wǎng)絡(luò)協(xié)議棧.因此,本文將主要研究弱Web使能設(shè)備為主的物端計(jì)算系統(tǒng),其中,邊緣路由等強(qiáng)Web使能的物端設(shè)備不在調(diào)查范圍內(nèi).
圖1顯示了Web使能能力設(shè)備、邊緣計(jì)算系統(tǒng)和物端計(jì)算系統(tǒng)的關(guān)系.強(qiáng)Web使能區(qū)域表示已經(jīng)成功地應(yīng)用了REST Web(基于REST基本原則建立起來(lái)的現(xiàn)代Web體系結(jié)構(gòu))[7]的服務(wù)器、個(gè)人計(jì)算機(jī)(PC互聯(lián)網(wǎng))和智能手機(jī)(移動(dòng)互聯(lián)網(wǎng))組成的現(xiàn)代Web系統(tǒng),它們均有相對(duì)統(tǒng)一的體系結(jié)構(gòu).例如個(gè)人計(jì)算機(jī)有X86+Windows/macOS+REST平臺(tái),而智能手機(jī)有ARM+Android/iOS+REST平臺(tái)[8].弱Web使能設(shè)備區(qū)域,由于系統(tǒng)的多樣性和資源受限等特性,其沒(méi)有統(tǒng)一的體系結(jié)構(gòu)模型,無(wú)法適應(yīng)未來(lái)萬(wàn)物互聯(lián)時(shí)代人工智能應(yīng)用的需求.物端計(jì)算系統(tǒng)需要遵循現(xiàn)代Web架構(gòu)設(shè)計(jì)原理,繼承其體系結(jié)構(gòu),并針對(duì)物端系統(tǒng)面向物理世界的特性做出相應(yīng)的擴(kuò)展或改進(jìn),以適應(yīng)靈活的、高動(dòng)態(tài)的、高度異構(gòu)的計(jì)算環(huán)境.主要有3個(gè)理由:
1) 借鑒云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的優(yōu)點(diǎn).云計(jì)算模式下,用戶可以通過(guò)移動(dòng)設(shè)備使用Web技術(shù)隨時(shí)隨地訪問(wèn)云端資源.物端計(jì)算模式下,這種需求仍然存在,并且通過(guò)Web技術(shù),用戶還可以訪問(wèn)和控制端的資源,例如查看環(huán)境數(shù)據(jù)、控制家用電器開(kāi)關(guān)等.
2) 兼容現(xiàn)有的Web系統(tǒng).采用Web體系結(jié)構(gòu)的物端計(jì)算系統(tǒng)可以兼容現(xiàn)有的個(gè)人計(jì)算機(jī)和手機(jī)互聯(lián)網(wǎng),但需要針對(duì)物端設(shè)備特性和計(jì)算環(huán)境做相應(yīng)的改進(jìn).
3) 解決物端設(shè)備的“昆蟲綱悖論”[8].物端設(shè)備如自然界的“昆蟲”一樣種類繁多,在硬件平臺(tái)、操作系統(tǒng)和通信協(xié)議等方面均存在多樣性的問(wèn)題,這給物端計(jì)算系統(tǒng)應(yīng)用的開(kāi)發(fā)帶來(lái)極大挑戰(zhàn).在傳統(tǒng)PC Web和移動(dòng)Web領(lǐng)域并不存在碎片化問(wèn)題,根本原因是它們都應(yīng)用了表述性狀態(tài)轉(zhuǎn)移(represen-tational state transfer, REST)[7]架構(gòu)風(fēng)格.因此在物端計(jì)算領(lǐng)域,支持REST的Web技術(shù)能夠解決“昆蟲綱悖論”的問(wèn)題.
然而,現(xiàn)有的Web技術(shù)無(wú)法直接遷移到物端計(jì)算系統(tǒng)中.1)由于應(yīng)用場(chǎng)景和成本等因素的限制,物端設(shè)備的計(jì)算、存儲(chǔ)、傳輸?shù)饶芰^弱,他們不具備直接支持Web應(yīng)用的能力;2)這些設(shè)備在硬件、系統(tǒng)、通信、物理功能等方面均具有多樣性的特點(diǎn).Web體系架構(gòu),需要經(jīng)過(guò)改進(jìn)才能應(yīng)用于物端設(shè)備.目前的研究主要集中在修改Web的一些實(shí)現(xiàn),增強(qiáng)“統(tǒng)一接口”原則[9-10],來(lái)滿足一些特有的應(yīng)用需求.另外一些研究也關(guān)注腳本語(yǔ)言的輕量化[11],并運(yùn)用在物端設(shè)備上.這些工作通常只關(guān)注了物端系統(tǒng)的部分需求.本文認(rèn)為有2點(diǎn)需要在未來(lái)的體系結(jié)構(gòu)設(shè)計(jì)中得到優(yōu)化與加強(qiáng):
1) REST基本原理[7].為了與現(xiàn)有的Web系統(tǒng)兼容,我們需要繼承已有的Web的基本設(shè)計(jì)原理REST.同時(shí),為了適應(yīng)資源受限的環(huán)境,實(shí)現(xiàn)面向物理世界的智能感知與控制,需要對(duì)當(dāng)前Web的實(shí)現(xiàn)進(jìn)行輕量化的改進(jìn).
2) 按需代碼[7],即Scripting功能.腳本語(yǔ)言簡(jiǎn)單易用、可移植性強(qiáng),適合物端計(jì)算系統(tǒng)的人工智能應(yīng)用.按需代碼在REST里是一個(gè)可選的原則,但對(duì)實(shí)現(xiàn)物端設(shè)備智能應(yīng)用來(lái)說(shuō)是一個(gè)必須實(shí)現(xiàn)的原則.
物端計(jì)算系統(tǒng)與現(xiàn)在的Web和物聯(lián)網(wǎng)[12]的本質(zhì)區(qū)別是數(shù)據(jù)存儲(chǔ)、計(jì)算和交互(包括感知和控制)更靠近物理設(shè)備和用戶[13].因此,需要加強(qiáng)物端設(shè)備的計(jì)算能力來(lái)承載更多的智能處理,同時(shí)需要與現(xiàn)有的Web系統(tǒng)融合,組建協(xié)同工作的、魯棒的、本地化的智能分布式系統(tǒng).本文對(duì)Web使能的物端計(jì)算系統(tǒng)的概念、現(xiàn)狀和發(fā)展方向進(jìn)行了綜述性研究,具體貢獻(xiàn)有4個(gè)方面:
1) 首次闡述了物端計(jì)算系統(tǒng)概念及適用范圍.
2) 比較分析得出:Web使能技術(shù)及腳本語(yǔ)言可有效解決物端設(shè)備多樣性和資源受限問(wèn)題.
3) 從REST架構(gòu)設(shè)計(jì)、腳本語(yǔ)言的應(yīng)用和調(diào)試技術(shù)的發(fā)展3個(gè)方面,歸納對(duì)比現(xiàn)有應(yīng)用于物端計(jì)算系統(tǒng)的Web技術(shù)的發(fā)展現(xiàn)狀.
4) 分析了未來(lái)物端計(jì)算系統(tǒng)研究的挑戰(zhàn),為物端計(jì)算領(lǐng)域指明了值得進(jìn)一步研究的方向.
物端計(jì)算系統(tǒng)的主要特征是:多樣性和資源受限,不能很好地支持Web體系結(jié)構(gòu).如圖2所示,多樣性主要包括平臺(tái)多樣性和應(yīng)用場(chǎng)景的多樣性.接下來(lái)我們從硬件平臺(tái)、操作系統(tǒng)和通信協(xié)議、應(yīng)用場(chǎng)景等方面來(lái)描述其多樣性.
Fig. 2 The diversity of things computing system圖2 物端計(jì)算系統(tǒng)的多樣性
1) 硬件平臺(tái).物端設(shè)備的硬件通常為專用功能而定制.它們的處理器/微控制器在數(shù)據(jù)寬度、指令系統(tǒng)、體系結(jié)構(gòu)等方面有很大的差異性[14].這些設(shè)備可按照計(jì)算、存儲(chǔ)和通信等能力的大小進(jìn)行分類.如表1所示,IETF將物端設(shè)備按照存儲(chǔ)能力粗略地分為3個(gè)類別[15]:Class 0(C0),Class 1(C1)和Class 2(C2).C0設(shè)備通常指的是資源極端受限的傳感器類設(shè)備,沒(méi)有直接連入現(xiàn)有互聯(lián)網(wǎng)的能力.C1設(shè)備能力相對(duì)強(qiáng)大一些,但是它們?nèi)匀粺o(wú)法直接使用現(xiàn)有的類HTTP協(xié)議族與互聯(lián)網(wǎng)中其他節(jié)點(diǎn)通信.C2設(shè)備的資源受限程度相對(duì)較小,能支持一些裁剪后的互聯(lián)網(wǎng)通信協(xié)議棧,運(yùn)行簡(jiǎn)單的腳本程序.
Table 1 The Classification of IoT Devices Based onMemory of IETF
2) 操作系統(tǒng).文獻(xiàn)[16]指出:當(dāng)能夠?yàn)檫@些高度異構(gòu)的硬件平臺(tái)提供統(tǒng)一通用的API和SDK的一款或幾款嵌入式操作系統(tǒng)出現(xiàn)時(shí),物聯(lián)網(wǎng)應(yīng)用才能無(wú)處不在.早期嵌入式操作系統(tǒng)通常為特定的硬件平臺(tái)或應(yīng)用需求而設(shè)計(jì)的,平臺(tái)間相互不能兼容,通用性差[17].近年來(lái),一些嵌入式操作系統(tǒng)開(kāi)始致力于發(fā)展成為通用性操作系統(tǒng),如TinyOS[18],Contiki[19],T-kernel[20]等,表2對(duì)它們做了比較,它們大多支持多線程和動(dòng)態(tài)內(nèi)存,也大多支持C語(yǔ)言,內(nèi)存最小的為TinyOS,只有1 KB.
3) 通信協(xié)議.操作系統(tǒng)需要根據(jù)硬件平臺(tái)支持不同的通信協(xié)議棧,這些協(xié)議棧大多具有低功耗低速率的特點(diǎn),但他們之間不能夠“互通、互操作”[22].物端計(jì)算系統(tǒng)中常見(jiàn)的無(wú)線通信協(xié)議有Z-Wave[23],ZigBee[24],Bluetooth Low Energy (BLE)[25],6LoWPAN[26]等,表3對(duì)它們?cè)诔S媚J较碌奶匦宰隽撕?jiǎn)單比較.這些通信協(xié)議支持的應(yīng)用層協(xié)議大多數(shù)不能與現(xiàn)有的互聯(lián)網(wǎng)應(yīng)用層協(xié)議(HTTP)兼容,通常需要在應(yīng)用程序?qū)幼鰠f(xié)議的相互轉(zhuǎn)換工作.6LoWPAN,CoAP[27]協(xié)議通過(guò)運(yùn)行有TCP/IP協(xié)議棧的網(wǎng)關(guān)節(jié)點(diǎn),讓資源受限的設(shè)備以兼容HTTP的方式連接到現(xiàn)有的互聯(lián)網(wǎng)系統(tǒng)中.很多嵌入式操作系統(tǒng)(例如Contiki[19],TinyOS[18],Micro T-kernel[28],mbed[29]等)均實(shí)現(xiàn)了對(duì)6LoWPAN和CoAP的支持.這種方式將大大降低應(yīng)用程序開(kāi)發(fā)和部署的復(fù)雜度.
4) 應(yīng)用場(chǎng)景.物端計(jì)算的應(yīng)用場(chǎng)景十分豐富.例如智能家居、交通、電網(wǎng)、智慧交通、車聯(lián)網(wǎng)等.每一個(gè)應(yīng)用場(chǎng)景對(duì)硬件,網(wǎng)絡(luò)和用戶體驗(yàn)的要求各不相同.然而在智慧城市里,常常需要這些不同的系統(tǒng)之間相互配合來(lái)提供更加優(yōu)質(zhì)的服務(wù)[30].現(xiàn)有的物端計(jì)算系統(tǒng)沒(méi)有統(tǒng)一的體系結(jié)構(gòu),各個(gè)應(yīng)用領(lǐng)域之間基本是相互隔離的,容易形成信息孤島.因此,有必要將物端設(shè)備計(jì)算機(jī)化,形成統(tǒng)一體系結(jié)構(gòu)和計(jì)算平臺(tái).
Table 2 The Comparison of Operation Systems in Things Devices
Table 3 The Comparison of Communication Protocols of Things Computing System in Normal Operating Mode
物端設(shè)備另外一個(gè)顯著特征是資源受限.每個(gè)設(shè)備的功能較為單一,大量部署在各種復(fù)雜環(huán)境中,要求具有很低的功耗水平.這些特性限制了它的計(jì)算、存儲(chǔ)和通信能力,具體表現(xiàn)在3個(gè)方面:
1) 計(jì)算能力.通常采用嵌入式處理器,其表現(xiàn)形式通常為一個(gè)單片機(jī)或微控制器(MCU),基本都是單核結(jié)構(gòu),其主頻一般不超過(guò)1 GHz.
2) 存儲(chǔ)能力.RAM和ROM空間大多數(shù)都在100 KB以內(nèi),傳統(tǒng)計(jì)算機(jī)的應(yīng)用程序開(kāi)發(fā)技術(shù)和運(yùn)行環(huán)境不適用于這種資源受限的物端計(jì)算環(huán)境.
3) 通信能力.它們大多采用無(wú)線通信的方式.現(xiàn)有的基于PC和智能手機(jī)的通信協(xié)議棧無(wú)法運(yùn)行在物端設(shè)備上.學(xué)術(shù)界和工業(yè)界設(shè)計(jì)了很多低功耗、低成本的無(wú)線通信協(xié)議[21],但是傳輸能力通常受到極大限制.資源受限的特性限制了PC互聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)的基礎(chǔ)體系結(jié)構(gòu)REST Web在物端計(jì)算系統(tǒng)的應(yīng)用.
1) 統(tǒng)一的體系結(jié)構(gòu).為了應(yīng)對(duì)物端系統(tǒng)物端設(shè)備多樣性問(wèn)題,同時(shí)支持未來(lái)人工智能應(yīng)用,物端系統(tǒng)需要一個(gè)通用的軟件架構(gòu).文獻(xiàn)[20]早在1987年提出智能物體互聯(lián)網(wǎng)的概念,指出分布在全球各地的智能設(shè)備以松耦合的方式組成一個(gè)超功能分布式系統(tǒng)(highly functionally distributed systems, HFDS)[20].隨著移動(dòng)設(shè)備性能的增強(qiáng),PC互聯(lián)網(wǎng)的Web體系結(jié)構(gòu)成功的拓展到智能手機(jī)端,從而帶來(lái)了移動(dòng)互聯(lián)網(wǎng)的繁榮.然而,物端設(shè)備支持現(xiàn)有的Web體系結(jié)構(gòu)仍然具有很大的挑戰(zhàn),萬(wàn)物互聯(lián)的網(wǎng)絡(luò)很難形成統(tǒng)一的體系架構(gòu),從而實(shí)現(xiàn)HFDS的愿景.
如圖3所示,Web體系結(jié)構(gòu)中的REST風(fēng)格API可為物端計(jì)算系統(tǒng)組成部分之間交互提供統(tǒng)一的接口,設(shè)備間通過(guò)基于REST的應(yīng)用層協(xié)議相互連接.本文提倡將基于REST設(shè)計(jì)原理的Web技術(shù)體系拓展至物端設(shè)備,統(tǒng)一其體系結(jié)構(gòu),解決因多樣性帶來(lái)的應(yīng)用碎片化問(wèn)題.物端系統(tǒng)中設(shè)備需要高頻率地與真實(shí)世界交互,甚至一些應(yīng)用的每次計(jì)算都需要感知物理世界的數(shù)據(jù)或物理世界的反饋?zhàn)鳛檩斎?,這種應(yīng)用場(chǎng)景與傳統(tǒng)Web系統(tǒng)有著很大的差別,我們有必要針對(duì)新的環(huán)境,為物端計(jì)算系統(tǒng)設(shè)計(jì)改進(jìn)的REST架構(gòu)風(fēng)格,來(lái)指導(dǎo)物端系統(tǒng)軟件架構(gòu)的設(shè)計(jì).同時(shí),我們必須從軟硬件協(xié)同的角度出發(fā),設(shè)計(jì)高效的、低功耗Web體系,使其能夠應(yīng)用在資源受限的物端設(shè)備上.
Fig. 3 REST APIs provide uniform interaction interface for things圖3 REST API可為物端系統(tǒng)元素間交互提供統(tǒng)一接口
2) 不支持智能.目前的海量物端設(shè)備功能單一,資源受限,只是作為數(shù)據(jù)收集和命令執(zhí)行的工具,無(wú)法有效地處理智能任務(wù).然而,物端計(jì)算系統(tǒng)很多應(yīng)用場(chǎng)景需要模型在設(shè)備端進(jìn)行本地化地、實(shí)時(shí)地、在線學(xué)習(xí)與進(jìn)化[31].考慮物端設(shè)備的多樣性和資源受限的特點(diǎn),我們需要從芯片到應(yīng)用架構(gòu)全新的創(chuàng)新和設(shè)計(jì)才能高效地支持未來(lái)的人工智能應(yīng)用.例如設(shè)計(jì)低功耗、高能效、面向物理世界的智能物端處理器,在硬件上原生的支持智能.在系統(tǒng)上,形成統(tǒng)一的體系架構(gòu),支持設(shè)備間主動(dòng)交互與協(xié)同.在應(yīng)用架構(gòu)上,將算法的模型分布式化,從而利用物端設(shè)備有限的計(jì)算能力進(jìn)行局部學(xué)習(xí).這樣可以充分利用海量設(shè)備的有限計(jì)算能力,同時(shí)減輕數(shù)據(jù)上傳到云端計(jì)算時(shí)造成的網(wǎng)絡(luò)負(fù)載和云端智能計(jì)算負(fù)載[5].
3) 開(kāi)發(fā)難度高.應(yīng)用開(kāi)發(fā)人員要想在物端計(jì)算系統(tǒng)上開(kāi)發(fā)程序,通常需要具備從芯片、操作系統(tǒng)到高級(jí)編程語(yǔ)言等完備的全棧知識(shí).物端系統(tǒng)通常有數(shù)十種微處理器架構(gòu)、上百種嵌入式操作系統(tǒng)[16]、數(shù)十種通信協(xié)議[21].一個(gè)嵌入式程序員通常需要使用匯編語(yǔ)言初始化SoC上的各種資源、選擇合適的操作系統(tǒng)和通信協(xié)議棧來(lái)構(gòu)建整個(gè)軟硬件系統(tǒng).這對(duì)程序員的能力和經(jīng)驗(yàn)要求十分高,阻礙了物端系統(tǒng)應(yīng)用程序的開(kāi)發(fā)和普及.而且大多數(shù)應(yīng)用是為了特定硬件實(shí)現(xiàn)特定功能而編寫,依賴于特定的硬件資源.為特定硬件平臺(tái)編譯好的應(yīng)用通常無(wú)法運(yùn)行在另外一個(gè)平臺(tái)上.
物端設(shè)備大多數(shù)為傳統(tǒng)的嵌入式設(shè)備,其應(yīng)用開(kāi)發(fā)使用交叉編譯環(huán)境,需要配置復(fù)雜的編譯調(diào)試環(huán)境和特定的硬件調(diào)試器,增加了調(diào)試的難度[32].此外,由于物端計(jì)算系統(tǒng)通常分布在復(fù)雜的居住環(huán)境中,需要隨時(shí)隨地的動(dòng)態(tài)交互.開(kāi)發(fā)人員很難預(yù)測(cè)系統(tǒng)所有的限制和程序執(zhí)行情境,從而在部署前驗(yàn)證程序所有可能的分支.
綜上所述,物端計(jì)算系統(tǒng)輸入輸出與物理環(huán)境高度相關(guān),而且未來(lái)物端系統(tǒng)會(huì)承擔(dān)更多的智能處理任務(wù).基于Web技術(shù)和腳本語(yǔ)言的物端計(jì)算系統(tǒng)架構(gòu)能夠有效解決物端設(shè)備多樣性的問(wèn)題,并且能夠支持人工智能應(yīng)用.接下來(lái),本文將調(diào)研基于REST的Web技術(shù)應(yīng)用于物端計(jì)算系統(tǒng)的一些研究工作.
REST[7]是Web系統(tǒng)軟件架構(gòu)的基本風(fēng)格和原理.其基本原理包括:客戶-服務(wù)器風(fēng)格、無(wú)狀態(tài)、緩存、統(tǒng)一接口、分層系統(tǒng)、和按需編碼.合理的設(shè)計(jì)和強(qiáng)大的生命力使其成為現(xiàn)代Web系統(tǒng)設(shè)計(jì)的基本原理.文獻(xiàn)[33]是早期倡導(dǎo)通過(guò)REST原理將物整合到Web中的研究之一.文中提出構(gòu)建物理世界的“智能物體”網(wǎng)絡(luò),并將其融入現(xiàn)有的Web系統(tǒng),即Web of Things[34].其優(yōu)點(diǎn)是可以利用成熟的Web系統(tǒng)的技術(shù)(例如JavaScript,Ruby,HTML等)和機(jī)制快速構(gòu)建可用的應(yīng)用.
隨著邊緣計(jì)算的興起,學(xué)術(shù)界和工業(yè)界出現(xiàn)了許多致力于將Web技術(shù)擴(kuò)展到資源受限環(huán)境的研究.然而,由于物端計(jì)算系統(tǒng)的多樣性,這些研究大多數(shù)沒(méi)有考慮萬(wàn)物互聯(lián)場(chǎng)景下人工智能應(yīng)用的新需求,只針對(duì)特定的場(chǎng)景和問(wèn)題對(duì)Web的一些技術(shù)進(jìn)行裁剪和優(yōu)化,應(yīng)用在特定的場(chǎng)景.下面將介紹5個(gè)典型的基于REST風(fēng)格的物端計(jì)算系統(tǒng)應(yīng)用層協(xié)議:pREST (pico-REST)[9], ubiREST[10], TinyREST[35], seaHTTP[36], CoAP[27].這些協(xié)議都支持客戶-服務(wù)器、無(wú)狀態(tài)和分層的原則,因此,在表4中只列出是否支持緩存、統(tǒng)一接口和按需代碼原則.
Table 4 The Representative Application Layer Protocols in Things Computing System Based on REST
從表4中可以看出,這類協(xié)議大部分支持REST的客戶-服務(wù)器風(fēng)格、無(wú)狀態(tài)和分層系統(tǒng)的約束.但大部分都不支持緩存,也沒(méi)有強(qiáng)調(diào)按需代碼的原則.其中 pREST簡(jiǎn)化了統(tǒng)一接口原則(只支持原有的GET和POST方法),增加了SUBSCRIBE方法,允許表達(dá)對(duì)給定資源的興趣,并在該資源發(fā)生變化時(shí)被通知,從而提高上層應(yīng)用的實(shí)時(shí)性.ubiREST是建立在Pervasive REST (P-REST)[10]架構(gòu)風(fēng)格的一個(gè)中間件.而P-REST通過(guò)加強(qiáng)統(tǒng)一接口這一原則來(lái)實(shí)現(xiàn)對(duì)泛在網(wǎng)絡(luò)環(huán)境應(yīng)用程序的支持.P-REST定義了一個(gè)新的資源操作方法“INSPECT”,該方法允許獲取目標(biāo)資源的元數(shù)據(jù)(Meta-data).P-REST還通過(guò)引入抽象的統(tǒng)一資源標(biāo)識(shí)符(abstract URI, 即aURI)[10]來(lái)支持標(biāo)識(shí)一組資源.seaHTTP提供了2種新的方法(BRANCH和COMBINE),用于并發(fā)群組多資源請(qǐng)求的拆分和合并[36].同時(shí)在標(biāo)準(zhǔn)URI中加入時(shí)空屬性支持動(dòng)態(tài)群組命名和實(shí)體資源表述.
CoAP支持在資源受限的情況下實(shí)現(xiàn)簡(jiǎn)單、低開(kāi)銷和多播的傳輸,旨在資源極端受限的節(jié)點(diǎn)和網(wǎng)絡(luò)中以適當(dāng)?shù)男问綄?shí)現(xiàn)REST架構(gòu).學(xué)術(shù)界和工業(yè)界也涌現(xiàn)了很多基于CoAP的物聯(lián)網(wǎng)應(yīng)用體系架構(gòu)方面的研究,例如uID-CoAP[37],Lithe[38],jCoAP[39],mjCoAP[40],CoAPthon[41]等.CoAP是目前應(yīng)用最為廣泛的資源受限環(huán)境的基于REST的應(yīng)用層協(xié)議,基本上解決了一些物端設(shè)備應(yīng)用層傳輸協(xié)議與現(xiàn)代Web的HTTP協(xié)議的兼容問(wèn)題.
文獻(xiàn)[42]還針對(duì)智能互聯(lián)環(huán)境提出了一種可擴(kuò)展的設(shè)備服務(wù)發(fā)現(xiàn)機(jī)制;文獻(xiàn)[43]提出了智能家居協(xié)議(SHP),使應(yīng)用可以使用標(biāo)準(zhǔn)的HTTP方法來(lái)檢索和操縱設(shè)備的資源;文獻(xiàn)[44]提出了一種通過(guò)基于云的應(yīng)用服務(wù)器和一致的REST風(fēng)格的編程模型為物端設(shè)備提供類似Web腳本的架構(gòu).
這些研究大多都試圖通過(guò)修改或加強(qiáng)統(tǒng)一接口這一原則,使REST架構(gòu)更加適合有高動(dòng)態(tài)性、高擴(kuò)展性、面向物理世界的物端計(jì)算系統(tǒng).然而在萬(wàn)物互聯(lián)時(shí)代,人工智能應(yīng)用的興起,對(duì)物端計(jì)算系統(tǒng)提出了更多的需求.因此,研究者們必須謹(jǐn)慎地改進(jìn)原有的REST設(shè)計(jì)原理,設(shè)計(jì)更加靈活的、可擴(kuò)展的系統(tǒng)架構(gòu)原則,指導(dǎo)構(gòu)建統(tǒng)一的物端計(jì)算系統(tǒng)體系架構(gòu),從而支持未來(lái)人工智能應(yīng)用的大量部署.
腳本語(yǔ)言是REST按需代碼原則的具體實(shí)現(xiàn),相對(duì)于C/C++和Java等系統(tǒng)編程語(yǔ)言,其具有更高層次的抽象.它們簡(jiǎn)單易用、可移植性強(qiáng),適合具有多樣性的物端設(shè)備上應(yīng)用程序的開(kāi)發(fā),例如JavaScript[45],Lua[46],Ruby[47],Python[41].本節(jié)介紹這4種語(yǔ)言和其為適應(yīng)物端計(jì)算系統(tǒng)所做的改進(jìn),并從內(nèi)存占用(memory footprint)角度對(duì)它們進(jìn)行比較.
基于JavaScript將腳本編程拓展到資源受限環(huán)境的工作主要有:IoT.js[48],Cylon.js[49],Node.js[50],Device.js[51]等.IoT.js是由Samsung公司推出的基于輕量級(jí)JS引擎JerryScript[11]的IoT應(yīng)用程序的平臺(tái),它針對(duì)IoT器件在CPU性能和內(nèi)存占用方面限制,做了大量?jī)?yōu)化工作;Node.js基于Google V8 JavaScript引擎和libuv事件I/O,使得JavaScript既可用于客戶端,又可用于服務(wù)端,實(shí)現(xiàn)了客戶端-服務(wù)器語(yǔ)言的統(tǒng)一;Cylon.js是面向機(jī)器人和物聯(lián)網(wǎng)的JavaScript框架,支持多種物聯(lián)網(wǎng)硬件平臺(tái);Device.js允許用戶在選擇和控制各種智能設(shè)備時(shí)構(gòu)建Web應(yīng)用程序.
另外Lua,Ruby,Python等也經(jīng)常被裁剪用于資源受限的環(huán)境里.mRuby[52]是為IoT應(yīng)用定制的輕量級(jí)Ruby編程語(yǔ)言;MicroPython[53]是Python語(yǔ)言的變體,使用它開(kāi)發(fā)的應(yīng)用可以做到離線運(yùn)行,給調(diào)試帶來(lái)很大的便利,它集成了多種網(wǎng)絡(luò)通信協(xié)議,適用于需要多種網(wǎng)絡(luò)通信協(xié)議的物聯(lián)網(wǎng)領(lǐng)域.
物端設(shè)備的內(nèi)存資源受限,因此編程語(yǔ)言運(yùn)行時(shí)內(nèi)存占用的大小對(duì)物端計(jì)算系統(tǒng)十分重要.由于實(shí)驗(yàn)環(huán)境的限制,無(wú)法評(píng)估一些語(yǔ)言變種的各項(xiàng)性能,本文測(cè)試Node.js,Lua,Ruby和Python這4種語(yǔ)言編寫的Helloword程序運(yùn)行時(shí)內(nèi)存占用情況.實(shí)驗(yàn)平臺(tái)為MacBook Pro,處理器為2.7 GHz Intel Core i5,操作系統(tǒng)為OSX10.12.6,4種語(yǔ)言編寫的測(cè)試程序均輸出“Hello World”字符串,使用top命令采集內(nèi)存占用.表5是不同語(yǔ)言的內(nèi)存占用對(duì)比.
Table 5 The Comparison of Memory Footprint of Scripts表5 腳本語(yǔ)言內(nèi)存占用比較
此外,本文引用了程序語(yǔ)言測(cè)試平臺(tái)(the computer language benchmarks game)[54]對(duì)上述語(yǔ)言做測(cè)試結(jié)果.其基準(zhǔn)測(cè)試程序?yàn)閒asta格式的轉(zhuǎn)換,平臺(tái)處理器為4核2.4 GHz Intel Q6600,操作系統(tǒng)為UbuntuTM17.04 Linux x64 4.10.0-28-generic,測(cè)試結(jié)果如表6所示:
Table 6 The Result From the Computer LanguageBenchmarks Game
Note:The code size is calculated by the GZip compressed bytes size.
由表6可知,Lua的內(nèi)存占用量是最少的,Node.js是運(yùn)行速度最快的.因此,在存儲(chǔ)資源非常珍貴的物端設(shè)備上,Lua最適合用來(lái)改進(jìn),作為其應(yīng)用編程語(yǔ)言.
物端設(shè)備大多是傳統(tǒng)的嵌入式設(shè)備,因此大多采用的是傳統(tǒng)嵌入式的交叉編譯調(diào)試技術(shù)[55].程序通常在宿主機(jī)上開(kāi)發(fā),而在目標(biāo)機(jī)上運(yùn)行.隨著嵌入式操作系統(tǒng)和應(yīng)用程序的功能和規(guī)模不斷擴(kuò)大,這種復(fù)雜高難度的調(diào)試過(guò)程逐漸成為這些設(shè)備上應(yīng)用發(fā)展的瓶頸.現(xiàn)有的嵌入式調(diào)試方法可分為軟件模擬、硬件模擬(包括ROM仿真和在線仿真2種方法)、監(jiān)視器和在線調(diào)試等4種方法[56-57],下面分別對(duì)其進(jìn)行介紹.
1) 軟件模擬.為了降低調(diào)試難度,將調(diào)試工具和需要調(diào)試的程序均運(yùn)行在計(jì)算資源豐富的宿主機(jī)器上,通過(guò)調(diào)試工具來(lái)模擬程序在目標(biāo)機(jī)上行為的方式稱為軟件模擬調(diào)試.然而,軟件模擬目標(biāo)機(jī)處理器行為的方式,有可能因?yàn)樘幚砥鞯闹噶罴?、體系結(jié)構(gòu)的不同造成執(zhí)行時(shí)間、中斷響應(yīng)等系統(tǒng)重要特征上的巨大差異,無(wú)法反應(yīng)程序在目標(biāo)機(jī)上的實(shí)際運(yùn)行狀況.
2) 硬件模擬.分為ROM仿真和在線仿真2種方式.ROM仿真器又稱為ROMEmulator[58],通常由RAM以及附加電路組成.程序通過(guò)串口等通信方式下載到ROM仿真器的RAM里,模擬在目標(biāo)機(jī)上的運(yùn)行.這種方式避免了程序調(diào)試過(guò)程中頻繁操作目標(biāo)機(jī)的存儲(chǔ)設(shè)備.ROM仿真器通常針對(duì)特定MCU架構(gòu)設(shè)計(jì)的專用仿真硬件,使用這種方式調(diào)試會(huì)顯著增加成本.在線仿真又稱為In-CircuitEmulator(ICE)[59].它可以確保在線調(diào)試器在目標(biāo)系統(tǒng)崩潰后仍然能控制程序的運(yùn)行,再現(xiàn)程序崩潰“現(xiàn)場(chǎng)”.但是,仍需要針對(duì)特定的平臺(tái)定制價(jià)格昂貴的硬件仿真器.
3) 監(jiān)視器.即Monitor調(diào)試方法[60],由于資源受限,這種方式通常會(huì)將傳統(tǒng)的調(diào)試器拆分,分別運(yùn)行在目標(biāo)機(jī)和宿主機(jī)的操作系統(tǒng)中,使用串口、USB等常見(jiàn)串行通信方式,遵守相同的遠(yuǎn)程調(diào)試協(xié)議來(lái)實(shí)現(xiàn)通信.這種方式通常無(wú)須特定硬件,價(jià)格低廉,使用較為方便,能再現(xiàn)程序在目標(biāo)系統(tǒng)上運(yùn)行的真實(shí)狀況.然而這種方式需要目標(biāo)操作系統(tǒng)和調(diào)試模塊的支持,同時(shí)會(huì)增加目標(biāo)系統(tǒng)資源開(kāi)銷.例如GdbStub[61]技術(shù)是對(duì)MCU程序進(jìn)行監(jiān)控調(diào)試的一種方法,該方法為開(kāi)發(fā)嵌入式軟件的調(diào)試工具提供了技術(shù)基礎(chǔ).
4) 在線調(diào)試(in-circuit debugging, ICD)[62].在線調(diào)試是目前嵌入式開(kāi)發(fā)主要的調(diào)試方式.由于硬件仿真器的價(jià)格昂貴,且需要針對(duì)特定平臺(tái)定制,使得開(kāi)發(fā)成本十分高.解決方法之一是將調(diào)試接口標(biāo)準(zhǔn)化、集成在處理器中.例如Motorola的背景調(diào)試模式(BDM)[63]接口和聯(lián)合測(cè)試小組的JTAG接口[64].其中JTAG是一種開(kāi)放的國(guó)際標(biāo)準(zhǔn)測(cè)試接口協(xié)議,現(xiàn)有的大部分嵌入式器件都支持JTAG調(diào)試接口.JTAG在保持強(qiáng)大功能的前提下,大大降低了在線調(diào)試的成本.
除了上述4個(gè)調(diào)試方法外,許多研究者使用軟硬件相結(jié)合的方法實(shí)現(xiàn)遠(yuǎn)程調(diào)試.文獻(xiàn)[65]提出了一種在協(xié)同設(shè)計(jì)環(huán)境下的交叉調(diào)試技術(shù)BackC方法.在軟件調(diào)試中,可逆調(diào)試技術(shù)[66-67]是解決復(fù)雜程序調(diào)試過(guò)程中錯(cuò)誤復(fù)現(xiàn)、錯(cuò)誤定位問(wèn)題的有效技術(shù),近年來(lái)成為研究的熱點(diǎn).文獻(xiàn)[68]提出了一種基于硬件輔助模塊的適用于多核平臺(tái)的記錄-調(diào)試方案;文獻(xiàn)[69-70]等也分別研究了可逆調(diào)試技術(shù);文獻(xiàn)[71]通過(guò)使用一個(gè)程序?qū)⒋诤蚑elnet 協(xié)議進(jìn)行轉(zhuǎn)換,主機(jī)通過(guò)Telnet與目標(biāo)機(jī)通信.表7對(duì)4種主要調(diào)試方法進(jìn)行了簡(jiǎn)單對(duì)比,其中,在線調(diào)試方法的系統(tǒng)開(kāi)銷小,功能多,通用性強(qiáng)并且成本低,適合物端系統(tǒng)物端設(shè)備上的應(yīng)用開(kāi)發(fā)調(diào)試.
Table 7 The Comparison of Debugging Methods of the Embedded System
物端計(jì)算作為新興計(jì)算模式應(yīng)用前景廣闊,涉及傳感器、芯片、網(wǎng)絡(luò)、人工智能等多個(gè)研究方向[72].因此也面臨眾多挑戰(zhàn).本節(jié)總結(jié)物端計(jì)算系統(tǒng)研究的趨勢(shì)和遇到的挑戰(zhàn),列舉了值得進(jìn)一步研究的方向:體系結(jié)構(gòu)、高效能Web、支持智能和應(yīng)用程序調(diào)試等.
1) 體系結(jié)構(gòu).物端系統(tǒng)的多樣性阻礙了其統(tǒng)一的體系結(jié)構(gòu)的形成.由于物端設(shè)備資源受限的特性,在PC互聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)取得巨大成功的Web技術(shù)無(wú)法很好地直接應(yīng)用在物端計(jì)算系統(tǒng).隨著越來(lái)越多的物端設(shè)備連入互聯(lián)網(wǎng),統(tǒng)一體系結(jié)構(gòu)的研究與形成變得越來(lái)越迫切.如圖2所示,物聯(lián)網(wǎng)模式下,設(shè)備間的架構(gòu)極為混亂,計(jì)算系統(tǒng)和通信方式十分多樣化.
文獻(xiàn)[8]提出了可應(yīng)用于物端計(jì)算領(lǐng)域的SWoT架構(gòu),如圖4所示,將已經(jīng)在PC互聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)上得到驗(yàn)證的REST架構(gòu)拓展到物端計(jì)算領(lǐng)域.一個(gè)SWoT 系統(tǒng)由一個(gè)或者多個(gè)物端控域(ΦZone)構(gòu)成,物端控域是物理空間的抽象(例如智能家庭).它與云端之間通過(guò)網(wǎng)關(guān)(ΦPort)連接,ΦZone 內(nèi)部的多個(gè)物端設(shè)備通過(guò)基于REST的協(xié)議ΦREST交互,ΦPort 可以在ΦZone內(nèi)外自動(dòng)轉(zhuǎn)換協(xié)議,在內(nèi)部使用ΦREST,而外部使用REST.該體系結(jié)構(gòu)將PC的Web技術(shù)拓展至物端設(shè)備,讓計(jì)算盡可能更靠近設(shè)備和用戶.
Fig. 4 The architecture of Smart Web of Things (SwoT)圖4 Smart Web of Things (SwoT)架構(gòu)[8]
文獻(xiàn)[73]為物端計(jì)算系統(tǒng)提出了IoT-Aggregator的架構(gòu),如圖5所示,其主要思想是為每一個(gè)設(shè)備分配一個(gè)全球唯一的ID (ucode)[74],云端或邊緣上存儲(chǔ)該ID關(guān)聯(lián)的所有數(shù)據(jù),所有計(jì)算和訪問(wèn)控制都在云端或邊緣上進(jìn)行.這種架構(gòu)繼承了傳統(tǒng)物聯(lián)網(wǎng)的計(jì)算模式,其終端設(shè)備主要任務(wù)是采集數(shù)據(jù)和執(zhí)行命令.
Fig. 5 The architecture of IoT-Aggregator圖5 IoT-Aggregator架構(gòu)[73]
2) 高能效Web.由于物端設(shè)備資源受限,應(yīng)用于其上的Web系統(tǒng)必須是高能效的.這里的高能效指的是輕量級(jí)、速度快、功耗低.文獻(xiàn)[8]提出了一個(gè)從硬件到軟件完全開(kāi)放的技術(shù)棧Φ-Stack,為物端設(shè)備提供智能、高效的Web支持.如圖6所示,Φ-Stack是一個(gè)全新的、軟硬件協(xié)同設(shè)計(jì)的系統(tǒng)棧,主要模塊包括ΦPU,ΦOS,ΦDK和應(yīng)用程序Weblet.所有模塊的設(shè)計(jì)都優(yōu)先考慮設(shè)備的物理功能.
Fig. 6 The structure of Φ-Stack圖6 Φ-Stack結(jié)構(gòu)圖[8]
其他研究多集中于系統(tǒng)的某一部分實(shí)現(xiàn)部分目標(biāo).例如在硬件上,很多廠商將計(jì)算、通信、傳感等全部集成在一個(gè)芯片上,并盡可能地減少功耗.操作系統(tǒng)的主要設(shè)計(jì)目標(biāo)則是占用更小的內(nèi)存空間,為應(yīng)用預(yù)留更多計(jì)算資源,提供更全面的功能(例如支持HTTP協(xié)議棧等)[75-76].
3) 支持智能.目前AI算法大多需要大量的數(shù)據(jù)和很強(qiáng)的計(jì)算能力,一般運(yùn)行在云端.而由于資源限制,物端設(shè)備無(wú)法運(yùn)行現(xiàn)有的絕大部分智能算法.我們需要在硬件和算法2個(gè)層面進(jìn)行研究.在硬件上,需要設(shè)計(jì)面向物端設(shè)備的人工智能芯片,它應(yīng)具有速度快、功耗低、面積小并且可重塑的特點(diǎn),文獻(xiàn)[8]介紹了其為物端設(shè)備設(shè)計(jì)的一款基于RISC-V指令集的低功耗智能處理器ΦPU.ΦPU包含AI核、大核(通用核)和用于監(jiān)視和控制傳感器的小核.其中AI核是一個(gè)能根據(jù)用戶需求可重塑的神經(jīng)網(wǎng)絡(luò)處理引擎,實(shí)現(xiàn)了可重塑AI的概念.
在軟件上,應(yīng)該考慮到人的參與因素,具體需要根據(jù)物端計(jì)算場(chǎng)景設(shè)計(jì)輕量級(jí)智能算法,需要基于小數(shù)據(jù)集進(jìn)行實(shí)時(shí)在線學(xué)習(xí)、遷移學(xué)習(xí),需要提出適用于物端計(jì)算場(chǎng)景的計(jì)算框架等.弗羅里達(dá)大學(xué)提出了一個(gè)注重用戶滿意度的CNN 推理框架——Pervasive CNN (P-CNN)[77].P-CNN在物端計(jì)算的場(chǎng)景下滿足終端用戶的多樣性需求,為不同的推理任務(wù)提供最佳的用戶滿意度.P-CNN框架由跨平臺(tái)離線編譯(cross-platform offline compilation)和運(yùn)行時(shí)間管理(runtime management)兩個(gè)部分組成,可根據(jù)用戶的需求生成不同的內(nèi)核.該架構(gòu)在符合可接受準(zhǔn)確率的要求下動(dòng)態(tài)地確定一個(gè)最快的內(nèi)核,內(nèi)核調(diào)度器會(huì)為每一層神經(jīng)網(wǎng)絡(luò)分配出最優(yōu)的計(jì)算資源,并根據(jù)用戶的反饋選擇最優(yōu)內(nèi)核.
4) 物端調(diào)試技術(shù).物端計(jì)算系統(tǒng)本身受物理環(huán)境影響大,而REST這種松耦合架構(gòu)會(huì)給系統(tǒng)軟件帶來(lái)更大的不確定性,具體體現(xiàn)在響應(yīng)延遲上.這種不確定性給物端系統(tǒng)程序的調(diào)試帶來(lái)尤其巨大的挑戰(zhàn),程序員可能無(wú)法使用現(xiàn)有的調(diào)試的方法來(lái)驗(yàn)證程序的正確性.為了設(shè)計(jì)高效、安全、可移植的Web底層代碼格式,研究者們提出了名為WebAssembly[78]的字節(jié)碼技術(shù).該技術(shù)具有高效率、速度快、安全、可調(diào)試等特點(diǎn),然而WebAssembly的設(shè)計(jì)并沒(méi)有考慮到物端設(shè)備資源相對(duì)受限的特性.
信息技術(shù)的發(fā)展即將進(jìn)入萬(wàn)物互聯(lián)時(shí)代,聯(lián)網(wǎng)的每個(gè)節(jié)點(diǎn)是計(jì)算機(jī)化、智能化、可重塑的[79],需要通用的軟硬件體系架構(gòu)支撐應(yīng)用的無(wú)縫運(yùn)行和系統(tǒng)間的自主協(xié)作.本文詳細(xì)調(diào)研了將Web技術(shù)應(yīng)用到物端計(jì)算系統(tǒng)的一些工作.我們可以得出結(jié)論:物端計(jì)算系統(tǒng)市場(chǎng)規(guī)模巨大,但設(shè)備資源受限、功能弱.其尚無(wú)一個(gè)實(shí)際的既支持REST Web架構(gòu),又支持智能的系統(tǒng)平臺(tái),即沒(méi)有一個(gè)統(tǒng)一的體系架構(gòu).大多數(shù)研究只是針對(duì)某一個(gè)方面的問(wèn)題進(jìn)行優(yōu)化.針對(duì)物端系統(tǒng)的多樣性和資源受限特性,文獻(xiàn)[8]提出了一個(gè)軟硬件協(xié)同設(shè)計(jì)的開(kāi)放式架構(gòu)棧Φ-Stack.通過(guò)“軟硬件高度協(xié)同設(shè)計(jì)”和“原生的支持Web和智能”2個(gè)核心創(chuàng)新手法來(lái)設(shè)計(jì)和構(gòu)造高效能的、適合物端設(shè)備的REST Web體系結(jié)構(gòu).Φ-Stack的最終目標(biāo)是將物端設(shè)備計(jì)算機(jī)化,從而徹底地改造現(xiàn)在的物端計(jì)算系統(tǒng).
本文在第1節(jié)分析了物端計(jì)算系統(tǒng)的現(xiàn)狀和存在的問(wèn)題與挑戰(zhàn).然后,調(diào)研和分析了學(xué)術(shù)界和工業(yè)界為應(yīng)對(duì)這些挑戰(zhàn)而做出的努力.在第2節(jié)詳細(xì)分析了5個(gè)典型的基于REST的物端計(jì)算系統(tǒng)應(yīng)用層協(xié)議的特性.這些協(xié)議大多數(shù)只針對(duì)“統(tǒng)一接口”原則進(jìn)行改進(jìn),并不能滿足物端計(jì)算系統(tǒng)的需求.第3節(jié)中,我們?cè)敿?xì)調(diào)研和分析了一些代表性的腳本語(yǔ)言,并對(duì)它們的性能做了簡(jiǎn)單的評(píng)估.其中Lua開(kāi)發(fā)出的腳本程序占用存儲(chǔ)空間最小,適合用來(lái)改進(jìn)并應(yīng)用于資源受限的物端計(jì)算系統(tǒng).第4節(jié)詳細(xì)調(diào)研了嵌入式系統(tǒng)使用的應(yīng)用程序調(diào)試技術(shù).最后,本文總結(jié)了未來(lái)物端計(jì)算系統(tǒng)需要致力的4個(gè)關(guān)鍵問(wèn)題,包括統(tǒng)一的體系結(jié)構(gòu)、高能效Web、物端智能和物端調(diào)試技術(shù).隨著技術(shù)不斷進(jìn)步,物端計(jì)算系統(tǒng)、移動(dòng)互聯(lián)網(wǎng)、桌面互聯(lián)網(wǎng)最終會(huì)組成一個(gè)萬(wàn)物互聯(lián)網(wǎng)絡(luò),成為未來(lái)人工智能應(yīng)用的基礎(chǔ)設(shè)施.為“萬(wàn)物互聯(lián)”設(shè)計(jì)一個(gè)相互兼容的軟件架構(gòu)風(fēng)格來(lái)指導(dǎo)其體系結(jié)構(gòu)的建立,會(huì)為即將爆發(fā)的人工智能應(yīng)用的爆發(fā)打下堅(jiān)實(shí)的基礎(chǔ).
[1] Evans D. The Internet of things: How the next evolution of the Internet is changing everything[R/OL]. San Jose, CA: CISCO, 2011. [2017-11-15]. https://www.cisco.com/c/dam/en_us/about/ac79/docs/innov/IoT_IBSG_0411FINAL.pdf
[2] Satyanarayanan M. The emergence of edge computing[J]. Computer, 2017, 50(1): 30-39
[3] Shi W, Dustdar S. The promise of edge computing[J]. Computer, 2016, 49(5): 78-81
[4] Ahmed A, Ahmed E. A survey on mobile edge computing[C] //Proc of the 10th Int Conf on Intelligent Systems and Control. Piscataway, NJ: IEEE, 2016: 1-8
[5] Shi Weisong, Sun Hui, Cao Jie, et al. Edge computing—an emerging computing model for the Internet of everything era[J]. Journal of Computer Research and Development, 2017, 54(5): 907-924 (in Chinese)
(施巍松, 孫輝, 曹杰, 等. 邊緣計(jì)算: 萬(wàn)物互聯(lián)時(shí)代新型計(jì)算模型[J]. 計(jì)算機(jī)研究與發(fā)展, 2017, 54(5): 907-924)
[6] Bonomi F, Milito R, Zhu Jiang, et al. Fog computing and its role in the Internet of things[C] //Proc of the 1st Edition of the MCC Workshop on Mobile Cloud Computing. New York: ACM, 2012: 13-16
[7] Fielding R T, Taylor R N. Principled design of the modern Web arc-hi-tecture[C] //Proc of the 22nd Int Conf on Software Engineering. New York: ACM, 2000: 407-416
[8] Xu Zhiwei, Peng Xiaohui, Zhang Lei, et al. The Φ-stack for smart Web of things[C] //Proc of SmartIoT’17. New York: ACM, 2017: Article No.10
[9] Drytkiewicz W, Radusch I, Arbanowski S, et al. pREST: A REST-based protocol for pervasive systems[C] //Proc of 2004 IEEE Int Conf on Mobile Ad-hoc and Sensor Systems. Piscataway, NJ: IEEE, 2004: 340-348
[10] Caporuscio M, Funaro M, Ghezzi C, et al. Advanced Web Services: UbiREST-A Restful Service-Oriented Middleware for Ubiquitous Net-Working[M]. Berlin: Springer, 2014: 475-500
[11] Gavrin E, Lee S J, Ayrapetyan R, et al. Ultra lightweight JavaScript engine for Internet of things[C] //Proc of the 2015 ACM SIGPLAN Int Conf on Systems, Programming, Languages and Applications: Software for Humanity. New York: ACM, 2015: 19-20
[12] Xie Kaibin, Chen Haiming, Cui Li. PMDA: A physical model driven software architecture for Internet of things[J]. Journal of Computer Research and Development, 2013, 50(6): 1185-1197 (in Chinese)
(謝開(kāi)斌, 陳海明, 崔莉. PMDA:一種物理模型驅(qū)動(dòng)的物聯(lián)網(wǎng)軟件體系結(jié)構(gòu)[J]. 計(jì)算機(jī)研究與發(fā)展, 2013, 50(6): 1185-1197)
[13] Liu Peng, Lance H, Suman B. Lightweight multitenancy at the network’s extreme edge[J]. Computer, 2017, 50(10): 50-57
[14] Dey S, Mukherjee A, Paul H S, et al. Challenges of using edge devices in IoT computation grids[C] //Proc of 2013 Int Conf on Parallel and Distributed Systems. Piscataway, NJ: IEEE, 2013: 564-569
[15] Bormann C, Ersue M, Keranen A. Terminology for constrained node networks, RFC7228[R]. Fremont, CA: IETF, 2014
[16] Hahm O, Baccelli E, Petersen H, et al. Operating systems for low-end devices in the Internet of things: A survey[J]. IEEE Internet of Things Journal, 2016, 3(5): 720-734
[17] Atzori L, Iera A, Morabito G. The Internet of things: A survey[J]. Computer Networks, 2010, 54(15): 2787-2805
[18] Levis P, Madden S, Polastre J, et al. Ambient Intelligence: TinyOS: An operating system for sensor networks[M]. Berlin: Springer, 2005: 115-148
[19] Dunkels A, Grnvall B, Voigt T. Contiki-a lightweight and flexible operating system for tiny networked sensors[C] //Proc of the 38th Annual IEEE Conf on Local Computer Networks. Piscataway, NJ: IEEE, 2004: 455-462
[20] Sakamura K. The Objectives of the TRON Project: TRON Project 1987 Open-Architecture Computer Systems[M]. Berlin: Springer, 1987: 3-16
[21] Al-Fuqaha A, Guizani M, Mohammadi M, et al. Internet of things: A survey on enabling technologies, protocols, and applications[J]. IEEE Communications Surveys & Tutorials, 2015, 17(4): 2347-2376
[22] Heuer J, Hund J, Pfaff O. Toward the Web of things: Applying Web technologies to the physical world[J]. Computer, 2015, 48(5): 34-42
[23] Surhone L M, Timpledon M T, Marseken S F, et al. Z-Wave[J]. Internet of Things Key Applications & Protocols, 2010, 39(4): 620-622
[24] Gill K, Yang S H, Yao F, et al. A zigbee-based home automation system[J]. IEEE Trans on Consumer Electronics, 2009, 55(2): 422-430
[25] Gomez C, Oller J, Paradells J. Overview and evaluation of bluetooth low energy: An emerging low power wireless technology[J]. Sensors, 2012, 12(9): 11734-11753
[26] Kushalnagar N, Montenegro G, Schumacher C. IPv6 over low-power wireless personal area networks (6LoWPANs): Overview, assumptions, problem statement, and goals, RFC4919[R]. Fremont, CA: IETF, 2007
[27] Bormann C, Castellani A P, Shelby Z. CoAP: An application protocol for billions of tiny Internet nodes[J]. IEEE Internet Computing, 2012, 16(2): 62-67
[28] Kamio M, Nakamura K, Kobayashi S, et al. Micro T-Kernel: A low power and small footprint RTOS for networked tiny devices[C] //Proc of the 6th Int Conf on Information Technology: New Generations. Piscataway, NJ: IEEE, 2009: 587-594
[29] ARM Limited. Mbed[EB/OL]. [2017-11-15]. https://www.mbed.com
[30] Ahlgren B, Hidell M, Ngai C H. Internet of things for smart cities: Interoperability and open data[J]. IEEE Internet Computing, 2016, 20(6): 52-56
[31] Shi Weisong, Cao Jie, Zhang Quan, et al. Edge computing: Vision and challenges[J]. IEEE Internet of Things Journal, 2016, 3(5): 637-646
[32] Eugster P, Sundaram V, Zhang Xiangyu. Debugging the Internet of things: The case of wireless sensor networks[J]. IEEE Software, 2015, 32(1): 38-49
[33] Wilde E. Putting things to REST, 2007-015[R/OL]. Berkeley: School of Information, University of California, Berkeley, 2007. [2017-11-15]. http:/dret.net/netdret/docs/wilde-irep07-015-restful-things.pdf
[34] Guinard D, Trifa V, Mattern F, et al. From the Internet of things to the Web of things: Resource-oriented architecture and best practices[G] //Architecting the Internet of Things. Berlin: Springer, 2011: 97-129
[35] Luckenbach T, Gober P, Arbanowski S, et al. TinyREST: A protocol for integrating sensor networks into the Internet[C] //Proc of 2015 the Workshop on Real-World Wireless Sensor Networks. New York: ACM, 2005: 101-105
[36] Hou Chenda, Li Dong, Qiu Jiefa, et al. SeaHttp: A resource-oriented protocol to extend REST style for Web of things[J]. Journal of Computer Science and Technology, 2014, 29(2): 205-215
[37] Yashiro T, Kobayashi S, Koshizuka N, et al. An Internet of things (IoT) architecture for embedded appliances[C] //Proc of 2013 IEEE Region 10 Humanitarian Technology Conf. Piscataway, NJ: IEEE, 2013: 314-319
[38] Raza S, Shafagh H, Hewage K, et al. Lithe: Lightweight secure CoAP for the Internet of things[J]. IEEE Sensors Journal, 2013, 13(10): 3711-3720
[39] Konieczek B, Rethfeldt M, Golatowski F, et al. Real-time communication for the Internet of things using jCoAP[C] //Proc of the 18th IEEE Int Symp on Real-Time Distributed Computing. Piscataway, NJ: IEEE, 2015: 134-141
[40] Cirani S, Picone M, Veltri L. mjCoAP: An Open-source Lightweight Java CoAP Library for Internet of Things Applications[M]. Berlin: Springer, 2015: 118-133
[41] Tanganelli G, Vallati C, Mingozzi E. CoAPthon: Easy development of CoAP-based IoT applications with Python[C] //Proc of the 2nd IEEE World Forum on Internet of Things. Piscataway, NJ: IEEE, 2015: 63-68
[42] Stirbu V. Towards a RESTful plug and play experience in the Web of things[C] //Proc of the 6th IEEE Int Conf on Semantic Computing. Piscataway, NJ: IEEE, 2008: 512-517
[43] Kim S, Hong J Y, Kim S, et al. RESTful design and implementation of smart appliances for smart home[C] //Proc of IEEE UIC-ATC-SCALCOM’14. Piscataway, NJ: IEEE, 2015: 717-722
[44] Kovatsch M, Lanter M, Duquennoy S. Actinium: A RESTful runtime container for scriptable Internet of things applications[C] //Proc of the 3rd Int Conf on the Internet of Things. Piscataway, NJ: IEEE, 2012: 135-142
[45] Jaimini U, Dhaniwala M. JavaScript empowered Internet of things[C] //Proc of the 3rd Int Conf on Computing for Sustainable Global Development. Piscataway, NJ: IEEE, 2016: 2373-2377
[46] Ierusalimschy R, De Figueiredo L H, Celes Filho W. Lua-an extensible extension language[J]. Software Practice and Experience, 1996, 26(6): 635-652
[47] Yamamoto T, Oyama H, Azumi T. Lightweight ruby framework for improving embedded software efficiency[C] //Proc of the 4th IEEE Int Conf on Cyber-Physical Systems, Networks, and Applications. Piscataway, NJ: IEEE, 2016: 71-76
[48] Apache. IoT.js[EB/OL]. [2017-11-15]. http://iotjs.net
[49] The Hybrid Group. Cylon.js[EB/OL]. [2017-11-15]. https://cylonjs.com
[50] Tilkov S, Vinoski S. Node.js: Using JavaScript to build high-performance network programs[J]. IEEE Internet Computing, 2010, 14(6): 80-83
[51] Hemphill E. DeviceJS is Javascript for the physical world[EB/OL]. [2017-11-15]. http://devicejs.org/blog/post/devicejs-is-javascript-for-the-physical-world
[52] Nagumanthri A D, Tanaka K. Internet of things with mruby[C] //Proc of 2016 Int Conf on Information Technology. Piscataway, NJ: IEEE, 2016: 142-147
[53] Khamphroo M, Kwankeo N, Kaemarungsi K, et al. MicroPython-based educational mobile robot for computer coding learning[C] //Proc of 2017 Information and Comm-unication Technology for Embedded Systems. Piscataway, NJ: IEEE, 2017: 131-136
[54] Software in the Public Interest Inc. The computer language benchmarks game[EB/OL]. [2017-11-15]. http://bench marksgame.alioth.debian.org
[55] Wikipedia. Cross compiler[EB/OL]. [2017-11-15]. https://en.wikipedia.org/wiki/Cross_compiler
[56] MacNamee C, Heffernan D. Emerging on-ship debugging techniques for real-time embedded systems[J]. Computing & Control Engineering Journal, 2000, 11(6): 295-303
[57] R?ssler P, H?ller R. A novel debug solution for distributed embedded applications and implementation options[C] //Proc of the 37th IEEE Annual Conf on Industrial Electronics Society. Piscataway, NJ: IEEE, 2011: 2796-2801
[58] Wang J R, Yu C-H. ROM emulator: USA, US20060224377[P/OL]. 2006-10-15. [2017-11-15]. http://www.freepatentsonline.com/20060224377.pdf
[59] Chikao Uchino. In-circuit emulator system: USA, US20040078671A1[P/OL]. 2004-04-22. [2017-11-15]. http://www.freepatentsonline.com/20040078671.pdf
[60] Sutter E. Embedded Systems Firmware Demystified[M]. Boca Raton, FL: CRC Press, 2002: 247-249
[61] Gatliff B. Embedding with gnu: The gdb remote serial protocol[J]. Embedded Systems Programming, 1999, 12(11): 108-113
[62] Ibrahim D. Microcontroller debugging and testing tools[J]. Electronics World, 2009, 115: 20-23
[63] Huang Hongyan. Analysis and design of debugging technology in embedded system[D]. Hangzhou: Zhejiang University, 2016 (in Chinese)
(黃紅燕. 嵌入式系統(tǒng)調(diào)試技術(shù)的分析與設(shè)計(jì)[D]. 杭州: 浙江大學(xué), 2016)
[64] Logt L V D, Heyden F V D, Waayers T. An extension to JTAG for at-speed debug on a system[C] //Proc of IEEE Int Test Conf (ITC). Piscataway, NJ: IEEE, 2003: 123-130
[65] Kra Y. A cross-debugging method for hardware/software co-design environments[C] //Proc of the 30th Int Design Automation Conf. New York: ACM, 1993: 673-677
[66] Lee Y-H, Song Y W, Girme R, et al. Replay debugging for multi-threaded embedded software[C] //Proc of the 8th IEEE/IFIP Int Conf on Embedded and Ubiquitous Computing. Piscataway, NJ: IEEE, 2010: 15-22
[67] Dunlap G W, King S T, Cinar S, et al. ReVirt: Enabling intrusion analysis through virtual-machine logging and replay[J]. ACM SIGOPS Operating Systems Review, 2002, 36(SI): 211-224
[68] Honarmand N. Record and deterministic replay of parallel programs on multiprocessors[D]. Urbana-Champaign, IL: University of Illinois at Urbana-Champaign, 2015
[69] Luo Yan. Research and primitive implementation of backtracking debugging based on process snapshotting in kernel mode[D]. Hangzhou: Zhejiang University, 2008 (in Chinese)
(羅琰. 基于內(nèi)核模式下進(jìn)程快照的可回溯調(diào)試研究及初步實(shí)現(xiàn)[D]. 杭州: 浙江大學(xué), 2008)
[70] Jiang Shan. Research on reversible debugging on embedded multicore[D]. Hangzhou: Zhejiang University, 2016 (in Chinese)
(江山. 嵌入式多核架構(gòu)可逆調(diào)試技術(shù)研究[D]. 杭州: 浙江大學(xué), 2016)
[71] Wu Mingqi, Ma Chao. A software-hardware cooperative remote debugging method for embedded system[J]. Microcontrollers and Embedded Systems, 2005(7): 15-16 (in Chinese)
(吳明琪, 馬潮. 一種軟硬結(jié)合的嵌入式系統(tǒng)遠(yuǎn)程調(diào)試方法[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2005(7): 15-16)
[72] Salman O, Elhajj I, Kayssi A, et al. Edge computing enabling the Internet of things[C] //Proc of the 2nd IEEE World Forum on Internet of Things (WF-IoT). Piscataway, NJ: IEEE, 2015: 603-608
[73] Asano S, Yashiro T, Sakamura K. Device collaboration framework in IoT-aggregator for realizing smart environment[C] //Proc of 2016 TRON Symposium. Piscataway, NJ: IEEE, 2016
[74] Koshizuka N, Sakamura K. Ubiquitous ID: Standards for ubiquitous computing and the Internet of things[J]. IEEE Pervasive Computing, 2010, 9(4): 98-101
[75] Choi N, Kim D, Lee S J, et al. A fog operating system for user-oriented IoT services: Challenges and research directions[J]. IEEE Communications Magazine, 2017, 55(8): 44-51
[76] Cao Jie, Xu Lanyu, Abdallah R, et al. EdgeOS_H: A home operating system for Internet of everything[C] //Proc of the 37th IEEE Int Conf on Distributed Computing Systems. Piscataway, NJ: IEEE, 2017: 1756-1764
[77] Song Mingcong, Hu Yang, Chen Huixiang, et al. Towards pervasive and user satisfactory CNN across GPU microarchitectures[C] //Proc of 2017 IEEE Int Symp on High-Performance Computer Architecture. Piscataway, NJ: IEEE, 2017: 1-12
[78] Haas A, Rossberg A, Schuff D L, et al. Bringing the Web up to speed with WebAssembly[C] //Proc of the 38th ACM Sigplan Conf on Programming Language Design and Implementation. New York: ACM, 2017: 185-200
[79] Shi Hailong, Li Dong, Qiu Jiefan, et al. EasiSHA: A reconfigurable node architecture for IoT based on joint design of software and hardware[J]. Journal of Computer Research and Development, 2014, 51(5): 959-973 (in Chinese)
(石海龍, 李棟, 邱杰凡, 等. EasiSHA: 一種軟硬件協(xié)同的物聯(lián)網(wǎng)可重塑終端架構(gòu)[J]. 計(jì)算機(jī)研究與發(fā)展, 2014, 51(5): 959-973)