[導讀]作者簡介甄建勇,高級架構(gòu)師(某國際大廠),十年以上半導體從業(yè)經(jīng)驗。主要研究領(lǐng)域:CPU/GPU/NPU架構(gòu)與微架構(gòu)設(shè)計。感興趣領(lǐng)域:經(jīng)濟學、心理學、哲學。概?述愛因斯坦在他的相對論中告訴我們,沒有絕對的時間和空間,在一定條件下時間和空間是可以相互轉(zhuǎn)化的,是否我們的世界有一天能夠把...
作者簡介
甄建勇,高級架構(gòu)師(某國際大廠),十年以上半導體從業(yè)經(jīng)驗。主要研究領(lǐng)域:CPU/GPU/NPU架構(gòu)與微架構(gòu)設(shè)計。感興趣領(lǐng)域:經(jīng)濟學、心理學、哲學。
概 述
愛因斯坦在他的相對論中告訴我們,沒有絕對的時間和空間,在一定條件下時間和空間是可以相互轉(zhuǎn)化的,是否我們的世界有一天能夠把空間與時間轉(zhuǎn)化回到歷史的時期?
唐代詩仙李白也曾有云:“夫天地者,萬物之逆旅;光陰者,百代之過客”。是對空間和時間的另外一種表述。在人們一般的印象中,空間,不會隨著之間的變化而變大或變??;時間,也不會因為空間的變化而變慢或變快。時間和空間,看似毫不相關(guān)的兩個事物,卻又時時刻刻聯(lián)系在一起。其實在計算機領(lǐng)域的很多方面都可以體現(xiàn)時間和空間的關(guān)系,比如,芯片面積和處理速度的置換就是其中之一,此外還有CPU中的存儲器組織的設(shè)計時運用的時間局部性和空間局部性原理,也可以認為是時空互換的經(jīng)典應用。馮諾依曼結(jié)構(gòu)與他之前的結(jié)構(gòu)的最大不同就在于在計算機中引入了存儲部件,也正是這個存儲部件是計算機的設(shè)計進入了一個全新時代。也正是由于存儲部件在計算機體系結(jié)構(gòu)中的重要地位,無論是過去還是現(xiàn)在,無論是體系結(jié)構(gòu)設(shè)計中,還是在操作系統(tǒng)設(shè)計中,存儲組織的設(shè)計與管理一直是研究熱點。在前面介紹了CPU的數(shù)據(jù)通路和控制通路之后,本章,我們將介紹舉足輕重的存儲器組織。
TLB與cache簡介
對于computerarchitecture,除了流水線(pipelining)之外,存儲器層次組織(memoryhierarchy)是另外一個重要的部分。軟件方面,對linuxkernel的研究中,MMU是篇幅最多,也是最復雜的一部分。硬件方面,TLB和cache這兩個詞就比較常見了。這一小節(jié)就回憶一下這兩個概念吧。首先,為什么要有memeryhierarchy?(1)填補core和mainmemory之間的速度鴻溝。(2)填補SDRAM和mainmemory之間的cost鴻溝。(3)為了實現(xiàn)VirtualMemory其次,為什么實現(xiàn)Virtual Memory?歷史上,有兩個原因:其一,實現(xiàn)多個程序間高效的共享使用內(nèi)存, 其二,避免對小內(nèi)存系統(tǒng)編寫程序的難度?,F(xiàn)在主要是第一個原因。最后是memory hierarchy內(nèi)在原理,是局部性原理(principleof locality)這包括時間局部性(Temporallocality (locality in time))和空間局部性(Spatiallocality (locality in space))。 在介紹TLB 和 cache之前首先要明確幾點:(1)匯編完的程序里用到的內(nèi)存地址是虛擬地址。也就是說core執(zhí)行的load/stor指令中的內(nèi)存地址是虛擬地址。(2)對于多進程(線程)代碼,編譯時,操作系統(tǒng)會給每個進程分配不同的虛擬地址空間。(3)內(nèi)存是按頁(page)來管理和使用的,典型值是4K bytes。根據(jù)馮諾依曼體系結(jié)構(gòu),一切數(shù)據(jù)都來自內(nèi)存。所以就需要訪存(memoryaccess)。訪問內(nèi)存需要幾步?大體上需要兩步:(1)將虛擬地址轉(zhuǎn)換成物理地址。(2)讀/寫這個物理地址的內(nèi)容。詳細步驟:將虛擬地址轉(zhuǎn)換成物理地址,就需要虛擬地址到物理地址的一個映射表(具體映射方法有直接映射,組相聯(lián),全相聯(lián))。這個表,就是頁表(pagetable),頁表由很多項組成,每一項叫一個頁表項,由操作系統(tǒng)維護。創(chuàng)建進程的時候生成這個進程執(zhí)行過程中用到的所有的頁表項,其中一部分加載到內(nèi)存中,另外一部分放在硬盤上,即,交換區(qū)(swapspace)。由于訪存動作很多,所以虛擬地址到物理地址的轉(zhuǎn)換動作就很多,也就是訪問頁表的次數(shù)很多,所以根據(jù)局部性原理,就把一部分頁表項放到一個地方,這個地方就是TLB(translation-lookasidebuffer)。現(xiàn)在,物理地址知道了,那就可以讀/寫內(nèi)存對應的這個地址了。由于訪存操作很多,所以根據(jù)局部性原理,就把經(jīng)常訪問的地址的數(shù)據(jù)放到一個地方,這樣就不用每次都訪問內(nèi)存了,可以直接訪問這個地方。這個地方,就是cache。由于TLB里面只有一部分頁表項,所以有的就虛擬地址就在TLB里找不到對應的物理地址,這時,對于MIPS來說,會產(chǎn)生一個TLB miss的異常,然后由操作系統(tǒng)從內(nèi)存中找到對應的頁表項,然后將這個頁表項放到TLB里面(注意,更新算法),然后讓產(chǎn)生TLBmiss異常的那條指令重新執(zhí)行一遍,這時TLB里已經(jīng)有那一項了,也就能完成虛擬地址到物理地址的轉(zhuǎn)換了。如果,操作系統(tǒng)點兒背,內(nèi)存里也沒有對應的頁表項,那就只能從硬盤上的swapspace里找了(交換區(qū)里肯定有),然后把它放到TLB里,然后讓產(chǎn)生TLB miss異常的那條指令重新執(zhí)行一遍,這時TLB里已經(jīng)有那一項了,也就能完成虛擬地址到物理地址的轉(zhuǎn)換了。對于cache,有讀,寫之分。先說讀,如果cache里面有,直接把cache里面的數(shù)據(jù)返回,即,讀操作完成了。由于cache里面只有內(nèi)存數(shù)據(jù)的一部分,所以有的數(shù)據(jù)cache里面沒有,這時就只能產(chǎn)生讀內(nèi)存的地址信號,然后從數(shù)據(jù)線上取數(shù)據(jù)。然后更新cache(注意,更新算法)。再說寫,如果cache里面有,有兩種方式:通寫(write-through),寫返回(write-back)。由于cache里面只有內(nèi)存數(shù)據(jù)的一部分,所以有的數(shù)據(jù)cache里面沒有,這時就只能產(chǎn)生寫內(nèi)存的地址信號,然后把數(shù)據(jù)放到數(shù)據(jù)線上。然后更新cache。 數(shù)據(jù),可分為指令和普通數(shù)據(jù)。如果取指令和取普通數(shù)據(jù)各自使用一套memoryhierarchy,就有了ITLB,DTLB,icache,dcache。這就有點哈佛體系結(jié)構(gòu)的意思了。即core內(nèi)部采用哈佛體系結(jié)構(gòu),core外部采用馮-諾依曼體系結(jié)構(gòu)。下面是整體的流程。
圖1 TLB與cache的整體流程TLBMMU(memorymanagement unit),無論對于computerarchitecture designer還是OSdesigner,都是至關(guān)重要的部分,設(shè)計和使用的好壞,對性能影響比較大。MMU,是硬件和軟件配合最密切的部分之一,對于RISCCPU而言,更是這樣。前面,我們對or1200的整體memoryhierarchy做了簡單分析,了解了cache的映射方式,替換策略,寫策略,以及cache的優(yōu)化等等背景知識,并對or1200的具體實現(xiàn)做了分析。在現(xiàn)實中,cache往往和MMU緊密合作,完成CPU的訪存操作。本小節(jié)就來分析一下or1200的MMU模塊。研究一個東西,首先要了解其來龍去脈,MMU也不例外,我們在分析MMU的工作機制之前先介紹一下MMU的產(chǎn)生原因。當時,主要由兩方面的因素導致了MMU的產(chǎn)生:(1)從安全角度出發(fā),確保多進程程序在執(zhí)行時相互不影響。(2)從程序員的角度出發(fā),采用MMU可以讓程序員在編程時少受內(nèi)容容量的限制。現(xiàn)在而言,第一個原因占主要。在分析or1200的MMU實現(xiàn)之前,我們有必要先了解MMU的工作機制。為了更清晰的了解MMU的工作過程,我假設(shè)了一個具體的例子,通過這個例子來說明其詳細的工作步驟。比如,我們編寫了一個簡單的應用層程序: 代碼清單 1
一個簡單的應用層程序
1. /*demo process, base on OS*/ 2. int main() 3. { 4. int test; 5. test = 0x12345678; 6. } (1)假設(shè)其進程名稱為demo。(2)假設(shè)片外SDRAM(內(nèi)存)大小為32MB。其中內(nèi)核空間16MB,用戶空間16MB。(3)假設(shè)OS的內(nèi)存管理方式是單級頁式管理(還可能是段式,或頁段式),虛擬地址和物理地址均為32-bit。既然ps是8KB,也就是說最多需要的PTE的數(shù)量是:pte_num=32MB/8KB=4K。假設(shè)每個PTE是4Bytes,那么存放這些PTE一共需要的內(nèi)存大小是:4Bytes X4K=16KB。(4)假設(shè)OS在執(zhí)行進程demo之前,給她分配的地址空間大小為6頁(page size= 8KB),也就是48K。這48KB是連續(xù)的,其起始物理地址第0x801頁,也就是{19'h801,13'h01}。所以其地址空間是0x801頁,0x802頁,0x803頁,0x804頁,0x805頁,0x806頁,共6頁。既然其進程空間是48KB,每頁是8K,也就是說OS需要給demo進程生成6個PTE(pagetable entry,頁表項)。(5)假設(shè)這6個PTE存放在kernel空間的第0x600個頁,即進程demo的PTE存放開始物理地址是0x600000,虛擬地址假設(shè)是0x12345000。 (6)假設(shè)這進程這6頁的地址空間的分配方式是:代碼段,1頁;bss段,1頁;棧,1頁;堆,1頁;數(shù)據(jù)段,2頁。 (7)假設(shè)進程demo中的變量test的地址在棧段,并且其頁內(nèi)偏移為0x1。(8)假設(shè)OS給進程demo中變量test分配的虛擬地址為0x2001,物理地址為:0x1006001。(9)假設(shè)TLB的cacheentry數(shù)量是64,映射方式是直接映射,也就是說通過VPN進行模運算就可以得到TLB的索引地址。有了上面的假設(shè),那么MMU是如何工作的呢?MMU的功能主要是虛實地址轉(zhuǎn)換,PTE的cache(也就是TLB)。其具體過程,如下圖所示:圖 2 MMU工作的具體過程 其工作過程如下:為了實現(xiàn)虛實地址轉(zhuǎn)換,OS為每頁創(chuàng)建了一個頁表項(PTE,pagetable entry,由PPN域和管理域組成),每個虛擬地址也分成了兩部分,分別是VPN和INDEX,通過VPN的低6位(因為TLBcache是64 entry)定位到TLB的偏移量。如果相應的偏移量處TLB hit,那么就可以直接得到對應的PTE,有了PTE,我們就可以得到PTE中的PPN,PPN和INDEX組合在一起,就是物理地址。如果相應的偏移量處TLB miss或者頁面異常,那么MMU產(chǎn)生一個TLB miss或者page fault異常,交給OS完成異常的處理(TLB的更新,和其它操作)。對于本演示例子來說,變量test的虛擬地址是0x2001,可見其TLB entry偏移量是0x2,頁內(nèi)偏移量是0x1;VPN是0x2。那么,MMU是如何將這個虛擬地址換換成物理地址的呢?首先,OS會根據(jù)進程demo的進程號(PID,OR也有CID(contextID)保存,DTLBWMR中的CID域),和DMMUCR(DMMU 控制寄存器)中的PTBP(pagetable base pointer),得到進程demo的頁表的存放的開始地址(0x600000),然后得到對應的PTE的地址(0x600008)根據(jù)TLB的偏移0x2,查看對應的TLB的第2個cacheline,如果匹配,則進一步和MR(machregister)中的VPN比較,如果也匹配,好,恭喜你,TLB hit,并將對應的PTE(pte_2)的PPN(0x803)和INDEX(13'b0_0000_0000_0001)組合成物理地址(0x1006001),傳給qmem模塊,sb模塊,biu模塊,經(jīng)dbus_arbiter,memorycontroller,最終實現(xiàn)讀寫SDRAM的對應地址。如果TLB miss(對應的pte_2),那么OS查看異常寄存器,得到具體的異常信息,并最終將pte_2更新到TLB中,重新執(zhí)行MMU操作,則TLB hit,完成轉(zhuǎn)換過程。上面的過程,如果用一幅圖來展示的話,如下所示:圖 3 虛實地址轉(zhuǎn)換 上面介紹的OS的頁表是單級的,這樣的話,在搜索對應的PTE時需要依次遍歷所有的PTE表項,顯然比較慢,為了加快搜索速度,linux采用了兩級PTE頁表。其基本思想是將所有的PTE進行分組,每一組由一個PTD(PT directory,我自己給起的名字),每個PTD項對應一組PT。這樣,在搜索時,先確定其所在的頁表目錄,然后只需要遍歷本目錄中的PTE就可以了。其操作過程和單級頁表相似,如下圖所示:圖4 兩級頁表的虛實地址轉(zhuǎn)換 上面通過一個例子,說明了MMU的工作機制,大體可概括如下:(1)根據(jù)進程ID寄存器(這個寄存器的值是OS在進行進程切換時填進去的)和VPN得到存放對應頁表項的PTE的地址,主要使用CID和PTBP得到頁表目錄或頁表的存放的開始地址。并根據(jù)VPN得到具體頁表項的地址,從而獲得對應的頁表項(PTE)。(2)從PTE中得到PPN(3)PPN與INDEX組合,得到物理地址(4)從上面的分析,可以看出,CPU對PTE的訪問是非常頻繁的,為了加快速度,將部分PTE放到cache里面,這個cache就是TLB。TLB 這個cache的映射方式一般采用directmapped,而不是fullyassociative,和setassociative。因為TLB一般都很小,前面章節(jié)我們提到如果cache很小的時候才用直接映射,延遲小,電路簡單。(5)上面描述的過程是一帆風順的情況,實際可不如此,如果出現(xiàn)TLBmiss,如何處理呢?硬件提供OS事先設(shè)置的當前進程的頁表存放的起始地址,頁表項的偏移地址,OS利用這些信息找到對應的PTE,并將PTE中的信息取出來分別存放到匹配寄存器和轉(zhuǎn)換寄存器的對應位置,完成TLB的更新。從中可以看出,整個處理過程,需要軟件硬件的巧妙的,天衣無縫的配合才行,那么具體是怎么處理的呢?我們通過查CPU的手冊可知,比如DTLB miss的異常入口地址是0x900,那么基于某個CPU的linux是如何實現(xiàn)的呢?參考head.S中相關(guān)代碼(soc-design\linux\arch\openrisc\kernel)。說到這里,你可能有一個疑問,“你一直說,如果出現(xiàn)TLB miss,OS計算出對應的PTE的地址,然后取出內(nèi)容,更新TLB”,既然TLB miss之后需要訪問內(nèi)存獲得對應的PTE,那么訪問這個PTE時,PTE的地址也不在TLB中怎么辦呢?!這個你不用擔心,原因就是所有的頁表項都存放在內(nèi)存的kseg0段,而這段內(nèi)存的訪問是是不用MMU的。kseg0段除了放這些PTE外,也是存放異常處理程序的地方,你想啊,如果產(chǎn)生了一個異常,假設(shè)這個異常的處理入口地址是0x900,這個0x900肯定是物理地址,是不需要MMU的,如果這個0x900也經(jīng)過MMU處理就亂套了,物理地址轉(zhuǎn)虛擬地址,虛擬地址轉(zhuǎn)物理地址,是一個相向的過程,系統(tǒng)要想正常運行,必須要有一個起源,而物理地址就是起源,虛擬地址只不過是為了達到某種效果而引進的一種手段而已。其實,對于一些內(nèi)存地址空間,是不能用MMU的,比如kernel使用的存放PTE的地方,還有就是異常/中斷處理程序的入口,這些是不能使用MMU的。原因是如下:如果PTE的存放地址也使用MMU的話,一但出現(xiàn)TLB miss,kernel需要訪問這些PTE,而這些PTE的地址也是經(jīng)過MMU的,就有可能再次產(chǎn)生TLB miss,這就出現(xiàn)了異常的嵌套,而且嵌套深度是無法確定的。如果存放異常向量的地址使用MMU,那么一旦出現(xiàn)一個異常之后,PC需要從這個地址取值,但是這個地址經(jīng)過MMU時,也可能出現(xiàn)TLB miss,也會有異常嵌套的問題。所以,我們平時所說的某個異常入口地址是0x200,這個‘0x200’是物理地址,是不需要虛實轉(zhuǎn)換的。MMU,cache確實有它的好處,其重要性也是有目共睹,但并不是適用于所有方面,上面所說的內(nèi)核空間的kseg0段是禁止MMU的,除此之外,kseg1段,MMU和cache都是禁止的。從這個角度來看,無論是什么事情,都要‘有所為有所不為’,不要跟風,不要認為是好東西就可以隨便用,要取其長,補己短,該出手時才出手。
代碼清單 2 DTLB miss
異常入口
1. /* ---[ 0x900: DTLB miss exception ]------------------------------------- */2. .org 0x900 3. l.j boot_dtlb_miss_handler 4. l.nop 代碼清單 3 DTLB miss
異常處理
1. /* ---[ boot dtlb miss handler ]----------------------------------------- */2. 3. boot_dtlb_miss_handler: 4. 5. /* mask for DTLB_MR register: - (0) sets V (valid) bit, 6. * - (31-12) sets bits belonging to VPN (31-12) 7. */ 8. #define DTLB_MR_MASK 0xfffff001 9. 10./* mask for DTLB_TR register: - (2) sets CI (cache inhibit) bit, 11. * - (4) sets A (access) bit, 12. * - (5) sets D (dirty) bit, 13. * - (8) sets SRE (superuser read) bit 14. * - (9) sets SWE (superuser write) bit 15. * - (31-12) sets bits belonging to VPN (31-12) 16. */ 17.#define DTLB_TR_MASK 0xfffff332 18. 19./* These are for masking out the VPN/PPN value from the MR/TR registers... 20. * it's not the same as the PFN */ 21.#define VPN_MASK 0xfffff000 22.#define PPN_MASK 0xfffff000 23. 24. 25. EXCEPTION_STORE_GPR6 26. 27.#if 0 28. l.mfspr r6,r0,SPR_ESR_BASE // 29. l.andi r6,r6,SPR_SR_SM // are we in kernel mode ? 30. l.sfeqi r6,0 // r6 == 0x1 --> SM 31. l.bf exit_with_no_dtranslation // 32. l.nop 33.#endif 34. 35. /* this could be optimized by moving storing of 36. * non r6 registers here, and jumping r6 restore 37. * if not in supervisor mode 38. */ 39. 40. EXCEPTION_STORE_GPR2 41. EXCEPTION_STORE_GPR3 42. EXCEPTION_STORE_GPR4 43. EXCEPTION_STORE_GPR5 44. 45. l.mfspr r4,r0,SPR_EEAR_BASE // get the offending EA 46. 47.immediate_translation: 48. CLEAR_GPR(r6) 49. 50. l.srli r3,r4,0xd // r3 <- r4 / 8192 (sets are relative to page size (8Kb) NOT VPN size (4Kb) 51. 52. l.mfspr r6, r0, SPR_DMMUCFGR 53. l.andi r6, r6, SPR_DMMUCFGR_NTS 54. l.srli r6, r6, SPR_DMMUCFGR_NTS_OFF 55. l.ori r5, r0, 0x1 56. l.sll r5, r5, r6 // r5 = number DMMU sets 57. l.addi r6, r5, -1 // r6 = nsets mask 58. l.and r2, r3, r6 // r2 <- r3 % NSETS_MASK 59. 60. l.or r6,r6,r4 // r6 <- r4 61. l.ori r6,r6,~(VPN_MASK) // r6 <- VPN :VPN .xfff - clear up lo(r6) to 0x**** *fff 62. l.movhi r5,hi(DTLB_MR_MASK) // r5 <- ffff:0000.x000 63. l.ori r5,r5,lo(DTLB_MR_MASK) // r5 <- ffff:1111.x001 - apply DTLB_MR_MASK 64. l.and r5,r5,r6 // r5 <- VPN :VPN .x001 - we have DTLBMR entry 65. l.mtspr r2,r5,SPR_DTLBMR_BASE(0) // set DTLBMR 66. 67. /* set up DTLB with no translation for EA <= 0xbfffffff */ 68. LOAD_SYMBOL_2_GPR(r6,0xbfffffff) 69. l.sfgeu r6,r4 // flag if r6 >= r4 (if 0xbfffffff >= EA) 70. l.bf 1f // goto out 71. l.and r3,r4,r4 // delay slot :: 24 <- r4 (if flag==1) 72. 73. tophys(r3,r4) // r3 <- PA 74.1: 75. l.ori r3,r3,~(PPN_MASK) // r3 <- PPN :PPN .xfff - clear up lo(r6) to 0x**** *fff 76. l.movhi r5,hi(DTLB_TR_MASK) // r5 <- ffff:0000.x000 77. l.ori r5,r5,lo(DTLB_TR_MASK) // r5 <- ffff:1111.x330 - apply DTLB_MR_MASK 78. l.and r5,r5,r3 // r5 <- PPN :PPN .x330 - we have DTLBTR entry 79. l.mtspr r2,r5,SPR_DTLBTR_BASE(0) // set DTLBTR 80. 81. EXCEPTION_LOAD_GPR6 82. EXCEPTION_LOAD_GPR5 83. EXCEPTION_LOAD_GPR4 84. EXCEPTION_LOAD_GPR3 85. EXCEPTION_LOAD_GPR2 86. 87. l.rfe // SR <- ESR, PC <- EPC 88. 89.exit_with_no_dtranslation: 90. /* EA out of memory or not in supervisor mode */ 91. EXCEPTION_LOAD_GPR6 92. EXCEPTION_LOAD_GPR4 93. l.j _di
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
休斯頓2022年6月30日 /美通社/ -- 行業(yè)領(lǐng)先的集成數(shù)字解決方案提供商Lummus Digital宣布與Lotte Chemical USA Corpora...
關(guān)鍵字:
MMU
AC
DIGITAL
AN
關(guān)注、星標嵌入式客棧,干貨及時送達 [導讀] 本文從內(nèi)存管理的發(fā)展歷程角度層層遞進,介紹 MMU 的誕生背景,工作機制。而忽略了具體處理器的具體實現(xiàn)細節(jié),將 MMU 的工作原理從概念上比較清晰的梳理了一遍。 MMU 誕生...
關(guān)鍵字:
MMU
一、S3C2440存儲控制器如果大家寫過S3C2440的ARM裸機程序都應該知道通常SDRAM的起始地址是0X30000000,但是大家有沒有想過為什么呢?下面我將給大家做一個簡要的介紹。查S3C
關(guān)鍵字:
MMU
S3C2440
存儲控制器
CPU
【導讀】騰博(R)今日公布了一項融合通信網(wǎng)關(guān) (Unified Communications Gateway) 技術(shù),并演示了與微軟 Office Communicator R2 之間的高清視頻互操作性,從而進一步鞏固了...
關(guān)鍵字:
COM
MMU
OFFICE
微軟
Ammunition工作室負責的Beats耳機外觀設(shè)計工作,將在未來幾個月內(nèi)過渡到新東家蘋果公司接管。Ammunition的創(chuàng)始人,前蘋果首席設(shè)計師羅伯特·布倫納在博客中表示,他對蘋果與BeatsElectronics和...
關(guān)鍵字:
蘋果
BEATS
MMU
TI
4月22日晚間消息(岳明)物聯(lián)網(wǎng)、社交媒體、大數(shù)據(jù)分析、云服務(wù)、OTT和跨平臺播放被視為2014年最值得關(guān)注的一些重大趨勢,與之相應的是移動設(shè)備應用的蓬勃發(fā)展。數(shù)據(jù)顯示,亞太地區(qū)的移動設(shè)備應用流量將在2017年超越
關(guān)鍵字:
ASIA
COM
MMU
新加坡
近年來,過渡金屬催化的C-H鍵官能化反應因其具有很好的原子經(jīng)濟性受到科學家的廣泛關(guān)注。與傳統(tǒng)的方法相比,這類反應具有底物不需要預活化、底物適應性廣泛、合成路線短、產(chǎn)生的廢棄物少等多種突出優(yōu)點,在有機合成特
關(guān)鍵字:
金屬
COM
MMU
AN
LED半導體照明網(wǎng)訊:在Gadget Show Live 2014上,一款名為Commuter X4 的可穿戴式背掛LED車尾燈和肩帶組合被評為英國發(fā)明家獎項(British Inventors Proj...
關(guān)鍵字:
LED
COM
MMU
TE
在Gadget Show Live 2014上,一款名為Commuter X4 的可穿戴式背掛LED車尾燈和肩帶組合被評為英國發(fā)明家獎項(British Inventors Project)的第二名。
對于喜歡在夜間騎...
關(guān)鍵字:
LED
COM
MMU
TE
金屬-有機框架化合物(MOFs)具有較高的比表面積、可控的孔道大小和可修飾的孔表面,在吸附、分離、催化、熒光和質(zhì)子傳輸?shù)阮I(lǐng)域展現(xiàn)出了廣泛應用前景。利用柔性的配體(形如氨基酸、多肽、蛋白質(zhì)等)與金屬離子自組裝
關(guān)鍵字:
金屬
COM
MMU
SoC
移動金融服務(wù)繼續(xù)拓展,13項服務(wù)現(xiàn)各擁有100多萬活躍帳戶香港2014年2月25日 GSMA 的無銀行帳戶人群移動金融 (MMU) 計劃今天發(fā)布了第三份年度《產(chǎn)業(yè)移動金融服務(wù)現(xiàn)狀報告》(Mobile Financial...
關(guān)鍵字:
移動
GSMA
MMU
IP
CommunicAsia2014/EnterpriseIT2014展覽會定于2014年6 月17日至20日重返新加坡濱海灣金沙,將聚光燈再次投向整個通信生態(tài)系統(tǒng)中涌現(xiàn)的創(chuàng)新技術(shù)。作為亞洲地區(qū)的頂級ICT資訊科技產(chǎn)業(yè)盛會...
關(guān)鍵字:
ASIA
COM
MMU
NI
8月28日午間消息,據(jù)北京郵電大學官方網(wǎng)站信息顯示,原中國礦業(yè)大學(北京)校長喬建永已出任北京郵電大學校長。此前,6月28日的北京郵電大學2013屆本科生畢業(yè)典禮上,原北京郵電大學校長方濱興在講話中透露,已經(jīng)向主
關(guān)鍵字:
北京郵電大學
CHINA
COM
MMU
GSMA(移動通信發(fā)展協(xié)會)近日發(fā)布的一份報告指出,肯尼亞使用移動支付服務(wù)的人數(shù)已超過2300萬。移動支付服務(wù),是無銀行賬戶人群移動金融(MMU)計劃的一部分。該計劃旨在鼓勵移動運營商與金融業(yè)之協(xié)作,以確保向無銀行賬
關(guān)鍵字:
移動
MMU
移動通信
GSMA
21ic訊 國際通訊與資訊科技展覽及研討會(CommunicAsia)、國際企業(yè)信息技術(shù)展覽會(EnterpriseIT)和亞洲廣播展(BroadcastAsia)——三大亞洲規(guī)模最大、最具聲望的...
關(guān)鍵字:
ASIA
COM
MMU
NI
CommunicAsia2013、EnterpriseIT2013和BroadcastAsia2013將為業(yè)界知名和新興企業(yè)提供獨一無二的展示平臺
關(guān)鍵字:
ASIA
COM
MMU
NI
中國上海,2012年10月22日訊 —— 恩智浦半導體 (NXP Semiconductors N.V.)(納斯達克代碼:NXPI)今日宣布德國工業(yè)及M2M通信系統(tǒng)的領(lǐng)先供應商- Dr. Neuhaus Telekomm...
關(guān)鍵字:
恩智浦
智能識別
MMU
智能電網(wǎng)
我們在 MWC 預覽過的 Nokia Drive 3.0 with Commute 已經(jīng)正式推出了。在這個正式版上,介面的配色有些微變動,在功能上,它會學習用戶的使用習慣。例如它懂得在用戶早上上班之前取得上班路線的交通...
關(guān)鍵字:
COM
MMU
NOKIA
TE
夏天來了,炎炎夏日是時候出去旅行了,不過你的手機和平板電腦的電量可不會像太陽那樣源源不斷;Timbuk2 考慮到了消費者這方面的要求,和 Joey Energy 合作推出了兩款帶充電器的旅行包。它們是 Power Co...
關(guān)鍵字:
充電器
POWER
COM
MMU