星期四, 6月 03, 2010

什麼是雲端運算?

什麼是雲端運算?
陳瀅 2010/06/02

【前言】

本書為IBM中國研究院團隊長期針對雲端運算之研究心得與實務經驗,內容除了深入淺出定義雲端運算內涵,更深度剖析雲端運算與虛擬化之關鍵技術與應用服務,是全球第一本完整介紹雲端運算與虛擬化技術專書。

雲端運算的定義

一般的說法是,在網路技術剛剛興起的時候,人們畫圖時習慣用一朵雲來表示,因此在選擇一個名詞以代表這種基於網路的運算方式時,就選擇了「雲端運算」這個名詞。雖然這個解釋非常浪漫有趣,卻容易讓人陷入雲裡霧中,不得其解。

進入網路時代後,人們熱中於上網,通過瀏覽網頁獲得資訊。當使用者在瀏覽器上輸入網址後,瀏覽器將以DNS伺服器和網路應用伺服器相互溝通,將網頁內容呈 現在使用者面前,這些互動的過程是透過網路、經路由器轉發而完成的。因為這個過程對使用者而言是看不到的,所以當時人們在繪製網路示意圖時,便將網絡抽象 畫成一朵雲,意指不用關心網絡的轉發過程,只需關注服務器端和客戶端。如圖1.1所示。

隨著網路的發展,寬頻愈來愈普及,戶外的無線上網節點也愈來愈多。除了個人電腦外,也有愈來愈多的設備具備連網功能,比如行動電話、辦公設備,甚至是上網 冰箱等的家電產品。同樣,網路的作用也不再局限於瀏覽網頁、收發郵件,還能夠為企業提供電子商務、客戶關係管理等服務;為一般大眾提供部落格、網路視訊、 網路相簿、網路影音串流等服務;為科學研究機構提供強大的運算處理功能。因此,網路的含義變得更廣,除了人們普遍認知的接入、路由等,還包括了運算、儲 存、服務和軟體等元素。因此,「雲端運算」這個名詞就應運而生了。

從圖1.1中我們可以看出, 雲端運算中的「雲」不僅包含了網路,更包含了那些被描繪在雲外的事物——這個小小的改變看似簡單,實際上蘊含著深刻的變革。

正 如用「雲」描繪網路以強調對網路的運用,而非關注於其運行的細節般,雲端運算用「雲」描繪包括網路、運算、儲存等在內的資訊服務基礎建設,以及包括作業系 統、應用平台、Web 服務等在內的軟體,就是為了強調對這些資源的運用,而不是運行細節。其實,這個概念被提出的時間並不長,然而對這個概念的定義卻是百家爭鳴。一方面體現了 雲端運算包羅萬象的特質,也說明業界對它的重視。既然所有人都希望成為雲端運算產業鏈中的一個角色,自然都會從自身的角度出發來定義雲端運算,那麼對於概 念的提取就是一個求同存異的過程。

下面,我們先列舉幾個一般人普遍認可的定義,然後再給出本書的定義。 維基百科認為,雲端運算是種能夠將動態伸縮的虛擬化資源,透過網路以服務的方式提供給使用者的運算模式,使用者不需要知道如何管理那些支援雲端運算的基礎設施。

Whatis.com 認為,雲端運算是種透過網路連接以獲取軟體和服務的運算模式,讓使用者可以獲得有如使用超級電腦的體驗。使用者透過筆記型電腦與手機連接入「雲」,獲取所需要的資源。

美國加州大學柏克萊分校最近發表了一篇關於雲端運算的報告,該報告認為,雲端運算是指在網路上提供各種應用的服務,也指在資料中心內提供這些服務的硬體和軟體,這些軟硬體則被稱為「雲」。

美國《BusinessWeek》的文章指出,Google 的雲就是由網絡連接起來的幾十萬甚至上百萬台的廉價電腦,這些電腦每天都處理著來自網路上大量的檢索資料和搜尋請求。

《BusinessWeek》在另一篇文章中總結說,從亞馬遜的角度看,雲端運算就是在一個大規模的系統環境中、不同系統間相互提供服務,軟體都是以服務的方式運行,當所有這些系統相互協作,並在網路上提供服務時,這些系統的總體就成為了「雲」。

Salesforce.com 認為,雲端運算是種更優良的業務運行模式。在此模式中,使用者的應用程式在共用的資料中心運行,用戶只需透過登錄和個人化設定,就可以使用這些資料中心的應用程式。

IBM認為,雲端運算是種分享的網路資訊服務的模式,使用者看到的只有服務本身,不用關心相關基礎的建置。

本書沿用IBM 的定義:雲端運算是種革新的IT運用模式。這種運用模式的主體是所有連接網路的實體,可以是人、設備和程式,客體就是IT本身,包括我們現在接觸到的,以及會在不久將來出現的各種資訊服務。

這種運用方式的核心原則是:硬體和軟體都是資源並被封裝為服務,使用者可以透過網路依其需求來使用。在雲端運算中,IT業務通常運行在遠端的分散式系統 上,而非本地端電腦或單一伺服器上。這個分散式系統由網路相互連接,透過開放的技術和標準把硬體和軟體抽象成為動態可擴展、可配置的資源,並對外以服務的 形式提供給使用者。該系統允許使用者透過網路使用這些服務,並獲取資源。使用者透過瀏覽器直接使用網路服務,不需了解背後資源如何調配、如何整合等實際運 作狀況。透過分散式系統,業務的建立、發布、執行和管理都可以在網路上進行,用戶只需按資源的使用量或業務規模付費。

(本文轉載陳瀅新書《雲端策略》,由天下出版發行)

新自旋電池利用磁場充電

中文:http://only-perception.blogspot.com/2009/03/blog-post_3098.html

Physicist develops battery using new source of energy
http://www.physorg.com/news156011642.html

March 11th, 2009

Miami(邁 阿密)大學與日本東京大學及東北大學已經能證明「自旋電池(spin battery)」的存在,若需要充電,則得要對一種稱為磁通道連接(magnetic tunnel junction,MTJ)裝置中的奈米磁鐵施加一大規模的磁場。這種新技術在無可動部件之電腦硬碟的創造上向前邁進一步,那將比目前所使用的硬碟更加快 速、便宜且使用更少能量。在未來,這種新電池能用來為動力車開發新電池。

這項研究將發表在即將出刊的 Nature 上,目前可由該期刊的 AOP 取得。

這種裝置由 Miami 物理學家 Stewart E. Barnes(科學與藝術學院)及其同僚所創造,可儲存能量在磁石中而不是透過化學反應。

如同一輛上緊發條的(winding up)玩具車,自旋電池藉由施加一大規模磁場來「上緊發條」 -- 沒有化學作用涉入。該裝置可能比至今所發現的任何東西都要更好,Barnes 說。

"我們已經預料這種效應,不過這種裝置產生超過百倍以上的過大電壓,且持續數十分鐘,而非我們所預期的數毫秒," Barnes 說。"正是這種違反直覺的事,導致我們在理論上理解發生了什麼事。"

這 種技術背後的祕密是利用奈米磁鐵感應電動勢。除了風格更直接之外,它所使用的原理與傳統電池相同。儲存在電池中能量,不管是在 iPod 或電動車內,它是以化學能的形態存在。當某樣東西「開啟」,這裡有化學反應發生並製造出電流。這項新技術將「磁能」直接轉換成「電能」而無須進行化學反 應。在這種過程中所製造的電流稱為「自旋極化電流(spin polarized current)」,而且在一種新技術,稱為「自旋電子學(spintronics)」中找到用途。

這項新發現增進我們對於磁鐵運作方式 的理解,而其立即應用是將 MTJs 當成電子元件使用,並以有別於傳統電晶體的方式運作。雖然實際裝置的直徑約與人類頭髮相當,而且甚至連 LED 都無法點亮,不過能以這種方式儲存的能源將有潛力讓一輛車運行數哩。其可能性無窮無盡,Barnes 說。

※ 相關報導:

* Electromotive force and huge magnetoresistance in magnetic tunnel junctions
http://www.nature.com/nature/journal/vaop/ncurrent/abs/nature07879.html
http://dx.doi.org/10.1038/nature07879


Pham Nam Hai, Shinobu Ohya, Masaaki Tanaka,
Stewart E. Barnes & Sadamichi Maekawa
Nature advance online publication 8 March 2009
doi: 10.1038/nature07879

...Here we show that such an e.m.f. can indeed be induced by a static magnetic field in magnetic tunnel junctions containing zinc-blende-structured(包含硫化鋅結構的)MnAs(砷化錳)quantum nanomagnets. The observed e.m.f. operates on a timescale of approximately 10^2–10^3 seconds and results from the conversion of the magnetic energy of the superparamagnetic(超順磁的) MnAs nanomagnets into electrical energy when these magnets undergo magnetic quantum tunnelling. As a consequence, a huge magnetoresistance(磁阻)of up to 100,000 per cent is observed for certain bias voltages(偏壓). Our results strongly support the contention that, in magnetic nanostructures, Faraday's law of induction must be generalized to account for forces of purely spin origin. The huge magnetoresistance and e.m.f. may find potential applications in high sensitivity magnetic sensors, as well as in new active devices such as 'spin batteries'.
未來電子學:使用量子化電流驅動的奈米裝置
微小電容器造就龐大記憶
IBM 推出新記憶體 10 年內終結硬碟
第一個積體奈米線感應器電路
MIT 以病毒開發出如細胞般大小的電池
研究者為次世代混合車革新燃料電池設計
陽光將二氧化碳轉變成甲烷
太陽是永續能源的明日之星

MIT 研究者發現製造電力的新方法

中文:http://only-perception.blogspot.com/2010/03/mit.html

MIT researchers discover new way of producing electricity
http://www.physorg.com/news187186888.html

By David Chandler, March 7, 2010

(PhysOrg.com) -- MIT 的一個科學家團隊發現一種先前未知的現象,使被稱為奈米碳管的微小導線發出強大的能量波。研究者表示,這項發現將導致製造電力的新方法。

這 種現象,稱為熱電波(thermopower waves),"開啟了能量研究的新領域,那相當罕見," Michael Strano 表示,MIT 的 Charles and Hilda Roddey 化學工程副教授,他是 3/7 Nature Materials 上一篇描述這些新發現之論文的資深作者。第一作者為 Wonjoon Choi,機械工程博士生。

如同穿越海洋的波浪沿著表面推動大量的漂浮殘骸般,該現象原來是一種沿著一條微小導線前進的熱波(thermal wave)-- 一種移動中的熱脈衝 -- 能沿著導線驅使電子創造出電流。

配 方中的關鍵成份是奈米碳管(carbon nanotubes) -- 以一種如雞網( chicken-wire)般的碳原子晶格所製成的亞微觀中空管狀物。這些管狀物,直徑只有幾十億分之一公尺寬,是一族新奇碳分子的一部份,包括巴克球 (buckyballs)與石墨烯(graphene)薄片,在過去二十年來已成為全世界密集研究的主題。


一種先前未知的現象

在 新實驗中,每根導電又導熱的奈米管接上(wired up)一層反應性燃料(譯註:cyclotrimethylene trinitramine,環三亞甲基三硝胺,即 RDX、cyclonite、hexogen,塑膠炸藥主成份),可透過分解作用產生熱。這種燃料接著能在奈米管的一端以雷射光束或著高壓火花點燃,而結 果就是一種沿著奈米碳管長邊快速移動的熱波,就好像火舌沿著點著的導火線長邊快速前進。來自燃料的熱進入奈米管中,它在這裡的行進速度比在燃料中快上數千 倍。當熱反饋至燃料塗層時,會造出一道沿著奈米管被引導的熱波。當溫度達 3,000 K 時,「熱環」沿著奈米管的速度比這種化學反應的正常速度要快上 1 萬倍。結果證明,那種燃燒所產生的熱,也能推動電子沿著奈米管前進,創造出一股真實電流。燃燒波(Combustion waves)-- 像這樣的熱脈衝會沿著導線猛衝 -- "在數學上已被研究超過 100 年了," Strano 說,不過他是第一個預測這種波可由奈米管或奈米線所引導,且這種熱波能推動電流沿著導線前進。

Strano 表示,在該小組最初的實驗中,當他們將奈米碳管接上他們的燃料塗層以便研究這種反應。"你瞧!(沿導線傳播)所導致的電壓峰值大小真令我們感到驚訝。"

在進一步開發後,該系統現在釋出的能量,依其重量比例來算,大約比相當重量的鋰離子電池大上百倍。

他說,所釋出的電力總量比熱電計算的預測大上許多。雖然許多半導體材料被加熱時能產生電位 -- 透過 Seebeck effect(席貝克效應,熱電效應,因溫差而生電) -- 不過此效應在碳中非常弱。

"那裡發生了某件事," 他說。"我們稱之為 electron entrainment(電子攜帶,譯註:entrainment 原意指使搭火車),因為部份電流似乎隨著波速而縮放。"

他解釋,這種熱波顯然正要搭乘(entraining)電荷載體(不管是電子或電洞),正如海洋波浪能收拾並沿著海面攜帶殘骸一樣。這種重要特性正是該系統能產生高電力的緣故。


探索可能的應用

他說,因為這是一種新發現,所以很難精確預測實際應用將會是什麼。不過他提到一種可能的應用會是讓新的超小型電子裝置 -- 例如米粒般大小的裝置,或許具備感應器或治療裝置,能被注射進入體內。又或著那可能導致"像空氣中的塵埃般被散佈的環境感應器," 他說。

理論上,他說,這樣的裝置能無限期地維持它們的電力直到用舊了,不像電池若放著不用電荷就會逐漸漏光。此外,Strano 指出,每條奈米線雖然微小,不過它們能被製成大型陣列以供應顯著電力給較大型的裝置。

這 些研究者亦計畫進行其理論的另一方面:透過採用不同類型的反應性材料當作塗層,波前(wave front)可能會振盪,從而產生交流電。Strano 表示那可能會開啟各式各樣的可能性,因為交流電是無線電波(諸如手機傳送)的基礎,不過目前的儲能系統全都只產生直流電。"我們的理論在我們開始在資料中 觀察到它們之前就預測了這些振盪," 他說。

此外,該系統目前版本的效率不高,因為大量電力變成熱與光而散發掉。該團隊計畫要改良它。

※ 相關報導:

* Chemically driven carbon-nanotube-guided thermopower waves
http://dx.doi.org/10.1038/nmat2714

Wonjoon Choi, Seunghyun Hong, Joel T. Abrahamson,
Jae-Hee Han, Changsik Song, Nitish Nair, Seunghyun Baik &
Michael S. Strano
Nature Materials, Published online: 7 March 2010
doi: 10.1038/nmat2714
作用中的奈米化學
奈米管+墨水+紙=即用電池
奈米碳管作為一單光子源
第一道鍺雷射讓我們更靠近「光學電腦」
科學家解開光合作用階段中的謎
金與銀奈米線能自然結合、維持強健
科學家利用金奈米級系統將光轉變成電流
靈感來自電漿電視的數位量子電池

成人睡眠:量比質更重要

中文:http://only-perception.blogspot.com/2010/02/blog-post_3179.html

Quantity More Important than Quality for Adult Sleep
http://www.physorg.com/news186332015.html

By Miranda Marquit, February 25, 2010

(PhysOrg.com) -- 多年來,老年人一直被認為不需要睡得像年輕人那樣多。不過,UCSD 的一項研究澈底顛覆那種假設。對老人們而言,當事情涉及記憶與其他認知處理活動時,睡眠的量顯然變得很重要。當我們變老時,我們所獲得的睡眠品質反而沒這麼重要。

事實上,ScienceNews.org 報告,睡眠品質對年長者而言沒太大影響 -- 不過對於較年輕的成人來說卻有關係:

睡眠品質似乎對於表現沒有影響,Drummond 表示。"對較老的成人而言,他們昨夜所獲得的睡眠絕對分鐘數,對於今日表現有著顯著的影響," 他說。

另一方面,在較年輕的人當中,睡眠的品質,而非總量,影響了次日的記憶,Drummond 發現。不管睡眠的總分鐘數,那些在大多數的時間睡得很紮實的年輕人,表現會比那些常在夜間醒來的人好,而且在某些區域中會有更高的腦部活動。

顯 然,當我們變老時,我們仍需要相同的睡眠數量。只因為老年人睡覺時更易翻來覆去,並不代表他們不需要同樣多的睡眠。事實上,如果他們所獲得的睡眠數量無法 跟他們年輕時所得到的一樣多時,他們更容易出現記憶問題。因此,這項研究的領導者 Sean Drummond 指出,專注在睡眠的數量上,對於年長者來說極其重要。

ScienceNews.org 這樣報告他的發現:

"昨夜的睡眠確實會影響今日的表現以及腦功能,而且那確實如此不同,取決於你是在你的二十幾歲或是在你的六十幾歲," 他說。"年紀較大的成年人需要一定數量的睡眠。年輕成人則要使他們的睡眠維持紮實的一大段(consolidated chunk)。"

這是當我們變老時,我們需要體認的另一個例子。了解我們老化時我們身體的需求能幫助我們活得更長壽 -- 以及擁有更好的生活品質。

※ 相關報導:

* Older Adults' Brains Boosted By More, Not Better, Sleep
http://www.sciencenews.org/view/generic/id/56505/

ScienceNews, March 13th, 2010; Vol.177 #6 (p. 14)
午間片刻小憩顯著提升腦部學習能力

即將出現大小如郵票般的 1 TB SSD

中文:http://only-perception.blogspot.com/2010/02/1-tb-ssd.html
SSDs the size of a postage stamp coming soon
http://www.physorg.com/news185438129.html

By Lin Edwards, February 15, 2010

(PhysOrg.com) -- 1 TB 固態硬碟(solid state drives,SSDs,譯註:另一種說法是 solid state disks,不過翻成固態裝置大概沒人看得懂)將在幾年內出現,而且它們的大小將會是一般郵票大小。

一 個由黑田忠廣(Tadahiro Kuroda)教授所領導,來自 Toshiba 與東京,慶應義塾大學(Keio University)的團隊,宣稱已開發出一種技術,能將 SSDs 的大小縮小約 90%。不僅如此,這種技術還能夠增加其節能表現達 70%,而且使它們的生產更加廉價。

這種新 SSD 的原型以 1 個控制晶片以及 128 個 NAND 快閃記憶晶片構成。資料傳輸速率據稱為 2 GB/s,日經表示,由於此系統基於無線電通訊,因此其生產成本很低。這些特色有助於 SSDs 成為未來資料儲存的標準系統。

這些 SSDs 預計在 2012 年可商業化取得,而且到那時候,他們的規格書甚至將有更進一步的改善。預期零售價格目前仍然未知。

更多資訊參見: http://www.nni.nikkei.co.jp/e/ac/tnks/Nni20100209DA9J2093.htm (需訂閱)

※ 看來現在的讀卡機可讀取 1 TB 記憶卡並不是沒有道理... XD

有機快閃記憶體
GE 展示1TB DVD 尺寸的全像碟片
新記憶材料可維持資料達10 億年

物理學家提出遠距傳輸能量的方法

中文:http://only-perception.blogspot.com/2010/02/blog-post_9139.html

Physicist proposes method to teleport energy
http://www.physorg.com/news184597481.html

By Lisa Zyga, February 5, 2010

(PhysOrg.com) -- 利用使資訊遠距傳輸(teleportation)成為可能的相同量子原理,一項新提議證明那也許能夠傳送能量。利用糾結粒子(entangled particles)中的量子能量波動,物理學家也許夠將能量注入其中一個粒子,並從位於數光年之遙的另一個粒子將能量取出。這項提議或能導致能量散佈的 新發展,對於量子資訊與量子能量之間的關係也能有更好的的理解。

東北大學(Tohoku University)的日本物理學家堀田昌寛(Masahiro Hotta)在一篇最近張貼在 arxiv.org 上,名叫「Energy-Entanglement Relation for Quantum Energy Teleportation(量子能量遠距傳輸的能量糾結關係)」的文章中解釋這種能量遠距傳輸方案。

先前,物理學家已證明如何遠距傳輸數種不同實體,包括光子、原子與離子的量子態。研究者預測遠距傳輸的原理也能擴展到分子、病毒與其他更複雜的物體。過去一年以來,物理學家也已經在探索量子能量遠距傳輸,而堀田的最新論文則建立在這些研究之上。

在 量子能量遠距傳輸中,一位物理學家首先針對二糾結粒子的每一個進行測量。針對第一個粒子的測量會把量子能量注入這個有二個粒子的系統中 -- 那是有可能的,因為任一粒子的能量中總有量子波動。透過對第二個粒子進行仔細挑選的測量,能量接著可從第二個粒子那裡擷取出來。在整個過程中,系統整體能 量仍維持不變。

如同先前遠距傳輸的例子,真實粒子並沒有被傳輸,因為在量子層次上,它們基本上完全一樣。相反的,它們所攜帶的資訊則很重要。基於這個緣故,物理學家可以只在粒子中傳送資訊,而非粒子本身。接收粒子接受來自傳送粒子的資訊,並呈現出與傳送粒子一模一樣的狀態。

堀田的論文標誌著「最小『量子能量遠距傳輸模型』種類之能量糾結關係」的第一個例子。一如他的解釋,這些發現能使科學家們探索物理學的基礎:尤其是,量子資訊與量子能量間的關係。

"這些量子糾結不等式(inequalities)很重要,使糾結與能量相關並成為一種實證的(evident)物理學資源,藉此,它們在協助獲得深刻的糾結理解上,本身也成了一種物理學資源," 他寫道。

如同 MIT Technology Review 一篇報導的解釋,這些關於糾結與資訊的新構想可能有深遠的影響:"這裡有種發展中的觀念,最能描述宇宙特性的並非那些統治事物的定律,而是那些主宰資訊的法則。這對量子世界而言顯然為真,對於狹義相對論而言必定為真,而目前正為了廣義相對論來進行探索。有某種方法在相同的立足點上處理能量,或能協助將這些互異的標準兜在一起。"

※ 我們說不定存在於母體中。相關報導:

* Energy-Entanglement Relation for Quantum Energy Teleportation
http://arxiv.org/abs/1002.0200

Masahiro Hotta
arXiv:1002.0200v1 [quant-ph]

Protocols of quantum energy teleportation (QET), while retaining causality and local energy conservation, enable the transportation of energy from a subsystem of a many-body quantum system to a distant subsystem by local operations and classical communication through ground-state entanglement. We prove two energy-entanglement inequalities for a minimal QET model. These relations help us to gain a profound understanding of entanglement itself as a physical resource by relating entanglement to energy as an evident physical resource.
新時空結構或能提供暗示給量子重力論
科學家在量子世界中發現「黃金比率」
在強磁下超冷電子的奇特對稱(E8)

量子態一舉數得
以「國王的新衣」重新思考布朗運動
以有序風格推進冷卻的邊疆
靈感來自電漿電視的數位量子電池
振動 -- 綠螢光蛋白效率關鍵

科學家利用金奈米級系統將光轉變成電流

中文:http://only-perception.blogspot.com/2010/02/blog-post_2331.html

Scientists turn light into electrical current using a golden nanoscale system
http://www.physorg.com/news185223339.html

February 12, 2010

賓 州大學 Nano/Bio Interface Center 的材料科學家在某種分子電路上證明光輻射到電流的換能(transduction,能量轉換)。這套系統 -- 奈米大小的金分子陣列 -- 藉由創造「在整個分子上感應(induce)與投射(project)電流」的表面電漿子(surface plasmons),來響應電磁波,類似光伏太陽能電池。

這些結果或能以一種自我供電的(可能是透過日光)、奈米大小的電路,為效率更高的能量收成提供一種技術性方法。最近,表面電漿子已被設計成各式各樣的光活化裝置,例如生物感應器。

這套系統也有可能用在資料儲存上。雖然傳統電腦處理器以二進位形態(不是開就是關)來代表資料,不過一部使用這種光伏電路的電腦也能以相符的光波長來儲存資料。

因為分子化合物能展現出廣泛的光學及電氣特性,故這項研究中的製造、測試與分析說明策略可成為一套新裝置的基礎,在其中,受電漿子控制的單一分子電氣特性可被設計成廣泛地牽連至電漿子電路以及光電和能源收成裝置。

材 料科學教授以及 Nano/Bio Interface Center 主任,Dawn Bonnell 等人製造出光敏陣列、金奈米粒子,在玻璃基質上將它們連起來。將奈米粒子之間的空間最小化至最理想距離,研究者利用光學輻射來刺激具傳導性的電子,稱為電 漿子(plasmons),以支配(ride)金奈米粒子的表面並將光線聚焦至連結分子的接點上。電漿子效應使分子中的電流產生效率增加百分之 400 到 2000 倍,那接著能透過網路傳輸到外部世界。

在光學輻射刺激表面電漿子且奈米粒子受到最佳耦合的例子中,大型電磁場在粒子間建 立,且由金奈米粒子捕捉。這些粒子接著彼此耦合,形成一條穿過相對電極的滲流路徑(percolative path)。大小、形狀與間隔能加以定做以改造光聚焦的區域。將這些粒子的大小、形狀與間隔最佳化以製造出一種「能引起共鳴的」光學天線,也許能產生數千 倍的強化。

此外,該團隊證明,電漿子耦合奈米粒子的光導電性強度能獨立於分子的光學特性之外進行調整,這項結果對於未來奈米級的光電子學裝置具有深遠的影響。

"如果該系統的效率能夠放大而沒有任何額外的、意外的限制,我們相信能製造出一種一安培、一伏特的樣本,直徑如人類頭髮,一英吋長," Bonnell 說。

這項研究發表在當期 ACS Nano 期刊上。

※ 文縐縐 XD 相關報導:

* Plasmon-Induced Electrical Conduction in Molecular Devices
http://pubs.acs.org/doi/abs/10.1021/nn901148m

Parag Banerjee, David Conklin, Sanjini Nanayakkara,
Tae-Hong Park, Michael J. Therien and Dawn A. Bonnell
ACS Nano, Article ASAP, January 22, 2010
doi: 10.1021/nn901148m

Metal nanoparticles (NPs) respond to electromagnetic waves by creating surface plasmons (SPs), which are localized, collective oscillations of conduction electrons on the NP surface. When interparticle distances are small, SPs generated in neighboring NPs can couple to one another, creating intense fields. The coupled particles can then act as optical antennae capturing and refocusing light between them. Furthermore, a molecule linking such NPs can be affected by these interactions as well. Here, we show that by using an appropriate, highly conjugated multiporphyrin chromophoric wire to couple gold NP arrays, plasmons can be used to control electrical properties. In particular, we demonstrate that the magnitude of the observed photoconductivity of covalently interconnected plasmon-coupled NPs can be tuned independently of the optical characteristics of the molecule—a result that has significant implications for future nanoscale optoelectronic devices.
表面電漿提高奈米結構的潛在價值
研究揭櫫金奈米簇穩定性與電子特性
新奈米晶體具廉價光源潛力
超材料光學的突破-- 解決吸收損失
新太陽能:彈性奈米天線陣列捕捉大量紅外光
量子點讓「彩虹」太陽能電池不再是夢想
控制材料的電子表面特性

首次利用雷射觸發雷雨的電氣活動
奈米雷射-- 未來光學電腦與科技的關鍵
相機閃光讓絕緣材料變導體(石墨烯)
研究者證明太陽能電池中的「雪崩效應」
研究者在量子級聯雷射中發現新型雷射
第一道鍺雷射讓我們更靠近「光學電腦」
振動 -- 綠螢光蛋白效率關鍵

聲學鑷子能幫助微小物體定位
DNA 裝配線 建構奈米粒子簇
靈感來自電漿電視的數位量子電池
物理學家提出遠距傳輸能量的方法

資源 - Source Code

◆ C Language

 ‧Laynetworks.com

文章清單 - CPU, GPU, APU

編輯

◆ 重點節要

 ▲ 綜合

  ‧Notebook Processors 說明到 i7 (英文,連結)


 ▲ Intel

  ‧IAMD SSE5與ntel AVX,LRBni 指令集
  ‧一眼看穿CPU型號:Intel筆電篇
  ‧一眼看穿CPU型號
  ‧Pentium Instruction Formats
  ‧The architecture of Pentium Microprocessor


 ▲ AMD

  ‧AMD SSE5新舊指令集
  ‧AMD CPU ID




◆ 術語說明

 ▲ Intel
  .AES (Advanced Encryption Standard):先進加密標準,晶片加密技術
  .TPM (Trusted Platform Module):可信任平台模組 (參考Intel Q45 )


 ▲ AMD
  ‧NX bit (No eXecute bit ):防止資料被當成指令執行

.

Pentium Instruction Formats

http://www.laynetworks.com/Pentium_Instruction%20formats.htm
by Rajesh Kothandapani

Instruction formats

GENERAL INSTRUCTION FORMAT


All Intel Architecture instruction encoding are subsets of the general instruction format shown in Figure 2-1. Instructions consist of optional instruction prefixes (in any order), one or two primary opcode bytes, an addressing-form specifier (if required) consisting of the ModR/M byte and sometimes the SIB (Scale-Index-Base) byte, a displacement (if required), and an immediate data field (if required).

Generalities:

-- Many (most?) of the instructions have exactly 2 operands.If there are 2 operands, then one of them will be required to use register mode, and the other will have no restrictions on its addressing mode.

-- There are most often ways of specifying the same instruction for 8-, 16-, or 32-bit oeprands. I left out the 16-bit ones to reduce presentation of the instruction set. Note that on a 32-bit machine, with newly written code, the 16-bit form will never be used.

Meanings of the operand specifications:

reg - register mode operand, 32-bit register
reg8 - register mode operand, 8-bit register
r/m - general addressing mode, 32-bit
r/m8 - general addressing mode, 8-bit
immed - 32-bit immediate is in the instruction
immed8 - 8-bit immediate is in the instruction
m - symbol (label) in the instruction is the effective address


Data Movement
--------------------------

mov reg, r/m ; copy data
r/m, reg
reg, immed
r/m, immed
movsx reg, r/m8 ; sign extend and copy data
movzx reg, r/m8 ; zero extend and copy data
lea reg, m ; get effective address
(A newer instruction, so its format is much restricted over the other ones.)

EXAMPLES:

mov EAX, 23 ; places 32-bit 2's complement immediate 23
; into register EAX
movsx ECX, AL ; sign extends the 8-bit quantity in register
; AL to 32 bits, and places it in ECX
mov [esp], -1 ; places value -1 into memory, address given
; by contents of esp
lea EBX, loop_top ; put the address assigned (by the assembler)
; to label loop_top into register EBX


Integer Arithmetic
-----------------------------

add reg, r/m ; two's complement addition
r/m, reg
reg, immed
r/m, immed
inc reg ; add 1 to operand
r/m
sub reg, r/m ; two's complement subtraction
r/m, reg
reg, immed
r/m, immed
dec reg ; subtract 1 from operand
r/m
neg r/m ; get additive inverse of operand
mul eax, r/m ; unsigned multiplication
; edx||eax <- data-blogger-escaped--="" data-blogger-escaped-2="" data-blogger-escaped-based="" data-blogger-escaped-before="" data-blogger-escaped-cmp="" data-blogger-escaped-comp.="" data-blogger-escaped-complement="" data-blogger-escaped-div="" data-blogger-escaped-division="" data-blogger-escaped-does="" data-blogger-escaped-eax="" data-blogger-escaped-edx="" data-blogger-escaped-eflags="" data-blogger-escaped-extends="" data-blogger-escaped-first="" data-blogger-escaped-idiv="" data-blogger-escaped-immed8="" data-blogger-escaped-immed="" data-blogger-escaped-imul="" data-blogger-escaped-m8="" data-blogger-escaped-m="" data-blogger-escaped-multiplication="" data-blogger-escaped-on="" data-blogger-escaped-operand="" data-blogger-escaped-quotient="" data-blogger-escaped-r="" data-blogger-escaped-reg="" data-blogger-escaped-remainder="" data-blogger-escaped-s="" data-blogger-escaped-second="" data-blogger-escaped-sets="" data-blogger-escaped-sign="" data-blogger-escaped-span="" data-blogger-escaped-subtract="" data-blogger-escaped-unsigned="" style="font-weight: bold;">EXAMPLES:
neg [eax + 4] ; takes doubleword at address eax+4
; and finds its additive inverse, then places
; the additive inverse back at that address
; the instruction should probably be
; neg dword ptr [eax + 4]
inc ecx ; adds one to contents of register ecx, and
; result goes back to ecx


Logical
--------------
not r/m ; logical not
and reg, r/m ; logical and
reg8, r/m8
r/m, reg
r/m8, reg8
r/m, immed
r/m8, immed8
or reg, r/m ; logical or
reg8, r/m8
r/m, reg
r/m8, reg8
r/m, immed
r/m8, immed8
xor reg, r/m ; logical exclusive or
reg8, r/m8
r/m, reg
r/m8, reg8
r/m, immed
r/m8, immed8
test r/m, reg ; logical and to set EFLAGS
r/m8, reg8
r/m, immed
r/m8, immed8

EXAMPLES:

and edx, 00330000h ; logical and of contents of register
; edx (bitwise) with 0x00330000,
; result goes back to edx

Floating Point Arithmetic
--------------------------------
Since the newer architectures have room for floating point hardware on chip, Intel defined a simple-to-implement extension to the architecture to do floating point arithmetic. In their usual zeal, they have included MANY instructions to do floating point operations.
The mechanism is simple. A set of 8 registers are organized and maintained (by hardware) as a stack of floating point values. ST refers to the stack top. ST(1) refers to the register within the stack that is next to ST. ST and ST(0) are synonyms.


There are separate instructions to test and compare the values of floating point variables.

finit ; initialize the FPU
fld m32 ; load floating point value
m64
ST(i)
fldz ; load floating point value 0.0
fst m32 ; store floating point value
m64
ST(i)
fstp m32 ; store floating point value
m64 ; and pop ST
ST(i)
fadd m32 ; floating point addition
m64
ST, ST(i)
ST(i), ST
faddp ST(i), ST ; floating point addition
; and pop ST
ETC.


I/O
------

The only instructions which actually allow the reading and writing of I/O devices are priviledged. The OS must handle these things. But, in writing programs that do something useful, we need input and output. Therefore, there are some simple macros defined to help us do I/O.

These are used just like instructions.
put_ch r/m ; print character in the least significant
; byte of 32-bit operand
get_ch r/m ; character will be in AL
put_str m ; print null terminated string given
; by label m


Control Instructions
-------------------------

These are the same control instructions that all started with the character 'b' in SASM.
jmp m ; unconditional jump
jg m ; jump if greater than 0
jge m ; jump if greater than or equal to 0
jl m ; jump if less than 0
jle m ; jump if less than or equal to 0




INSTRUCTION PREFIXES

The instruction prefixes are divided into four groups, each with a set of allowable prefix codes:


· Lock and repeat prefixes.

— F0H—LOCK prefix.

— F2H—REPNE/REPNZ prefix (used only with string instructions).

— F3H—REP prefix (used only with string instructions).

— F3H—REPE/REPZ prefix (used only with string instructions).

— F3H—Streaming SIMD Extensions prefix.


· Segment override.

— 2EH—CS segment override prefix.

— 36H—SS segment override prefix.

— 3EH—DS segment override prefix.

— 26H—ES segment override prefix.

— 64H—FS segment override prefix.

— 65H—GS segment override prefix.


· Operand-size override, 66H


· Address-size override, 67H

For each instruction, one prefix may be used from each of these groups and be placed in any order. The effect of redundant prefixes (more than one prefix from a group) is undefined and may vary from processor to processor.


· Streaming SIMD Extensions prefix, 0FH

The nature of Streaming SIMD Extensions allows the use of existing instruction formats. Instructions use the ModR/M format and are preceded by the 0F prefix byte. In general, operations are not duplicated to provide two directions (i.e. separate load and store variants).



OPCODE

The primary OPCODE is either 1 or 2 bytes. An additional 3-bit OPCODE field is sometimes encoded in the ModR/M byte. Smaller encoding fields can be defined within the primary OPCODE. These fields define the direction of the operation, the size of displacements, the register encoding, condition codes, or sign extension. The encoding of fields in the OPCODE varies, depending on the class of operation.



MODR/M AND SIB BYTES

Most instructions that refer to an operand in memory have an addressing-form specifier byte (called the ModR/M byte) following the primary OPCODE. The ModR/M byte contains three fields of information:

· The mod field combines with the r/m field to form 32 possible values: eight registers and 24 addressing modes.

· The reg/opcode field specifies either a register number or three more bits of opcode information. The purpose of the reg/opcode field is specified in the primary opcode.

· The r/m field can specify a register as an operand or can be combined with the mod field to encode an addressing mode.

Certain encoding of the ModR/M byte require a second addressing byte, the SIB byte, to fully specify the addressing form. The base-plus-index and scale-plus-index forms of 32-bit addressing require the SIB byte. The SIB byte includes the following fields:

· The scale field specifies the scale factor.

· The index field specifies the register number of the index register.

· The base field specifies the register number of the base register.



DISPLACEMENT AND IMMEDIATE BYTES

Some addressing forms include a displacement immediately following either the ModR/M or SIB byte. If a displacement is required, it can be 1, 2, or 4 bytes. If the instruction specifies an immediate operand, the operand always follows any displacement bytes. An immediate operand can be 1, 2, or 4 bytes.


CMC—Complement Carry Flag
OPCODE COLUMN

The “OPCODE” column gives the complete object code produced for each form of the instruction. When possible, the codes are given as hexadecimal bytes, in the same order in which they appear in memory. Definitions of entries other than hexadecimal bytes are as follows:

• /digit—A digit between 0 and 7 indicates that the ModR/M byte of the instruction uses

only the r/m (register or memory) operand. The reg field contains the digit that provides an extension to the instruction's opcode.

• /r—Indicates that the ModR/M byte of the instruction contains both a register operand and an r/m operand.

• cb, cw, cd, cp—A 1-byte (cb), 2-byte (cw), 4-byte (cd), or 6-byte (cp) value following the opcode that is used to specify a code offset and possibly a new value for the code segment register.

• ib, iw, id—A 1-byte (ib), 2-byte (iw), or 4-byte (id) immediate operand to the instruction

that follows the opcode, ModR/M bytes or scale-indexing bytes. The opcode determines if the operand is a signed value. All words and double words are given with the low-order
byte first.

• +rb, +rw, +rd—A register code, from 0 through 7, added to the hexadecimal byte given at the left of the plus sign to form a single opcode byte.

• +i—A number used in floating-point instructions when one of the operands is ST(i) from

the FPU register stack. The number i (which can range from 0 to 7) is added to the

hexadecimal byte given at the left of the plus sign to form a single opcode byte.



Opcode Instruction Description

F5 CMC Complement carry flag



INSTRUCTION COLUMN

The “Instruction” column gives the syntax of the instruction statement as it would appear in an ASM386 program. The following is a list of the symbols used to represent operands in the instruction statements:

• rel8—A relative address in the range from 128 bytes before the end of the instruction to 127 bytes after the end of the instruction.

• rel16 and rel32—A relative address within the same code segment as the instruction
assembled. The rel16 symbol applies to instructions with an operand-size attribute of 16
bits; the rel32 symbol applies to instructions with an operand-size attribute of 32 bits.

• ptr16:16 and ptr16:32—A far pointer, typically in a code segment different from that of
the instruction. The notation 16:16 indicates that the value of the pointer has two parts. The value to the left of the colon is a 16-bit selector or value destined for the code segment register. The value to the right corresponds to the offset within the destination segment. The ptr16:16 symbol is used when the instruction's operand-size attribute is 16 bits; the ptr16:32 symbol is used when the operand-size attribute is 32 bits.

• r8—One of the byte general-purpose registers AL, CL, DL, BL, AH, CH, DH, or BH.

• r16—One of the word general-purpose registers AX, CX, DX, BX, SP, BP, SI, or DI.

• r32—One of the doubleword general-purpose registers EAX, ECX, EDX, EBX, ESP, EBP,ESI, or EDI.

• imm8—An immediate byte value. The imm8 symbol is a signed number between –128
and +127 inclusive. For instructions in which imm8 is combined with a word or
double word operand, the immediate value is sign-extended to form a word or double word. The upper byte of the word is filled with the topmost bit of the immediate value.

• imm16—An immediate word value used for instructions whose operand-size attribute is 16 bits. This is a number between –32,768 and +32,767 inclusive.

• imm32—An immediate double word value used for instructions whose operand-size
attribute is 32 bits. It allows the use of a number between +2,147,483,647 and
–2,147,483,648 inclusive.

• r/m8—A byte operand that is either the contents of a byte general-purpose register (AL,BL, CL, DL, AH, BH, CH, and DH), or a byte from memory.

• r/m16—A word general-purpose register or memory operand used for instructions whose operand-size attribute is 16 bits. The word general-purpose registers are: AX, BX, CX,DX, SP, BP, SI, and DI. The contents of memory are found at the address provided by the effective address computation.

• r/m32—A double word general-purpose register or memory operand used for instructions whose operand-size attribute is 32 bits. The double word general-purpose registers are :EAX, EBX, ECX, EDX, ESP, EBP, ESI, and EDI. The contents of memory are found at the address provided by the effective address computation.

• m—A 16- or 32-bit operand in memory.

• m8—A byte operand in memory, usually expressed as a variable or array name, but
pointed to by the DS:(E)SI or ES:(E)DI registers. This nomenclature is used only with the
string instructions and the XLAT instruction.

• m16—A word operand in memory, usually expressed as a variable or array name, but
pointed to by the DS:(E)SI or ES:(E)DI registers. This nomenclature is used only with the
string instructions.

• m32—A double word operand in memory, usually expressed as a variable or array name, but pointed to by the DS:(E)SI or ES:(E)DI registers. This nomenclature is used only with the string instructions.

• m64—A memory quadword operand in memory. This nomenclature is used only with the CMPXCHG8B instruction.

• m128—A memory double quadword operand in memory. This nomenclature is used only with the Streaming SIMD Extensions.

• m16:16, m16:32—A memory operand containing a far pointer composed of two numbers. The number to the left of the colon corresponds to the pointer's segment selector. The number to the right corresponds to its offset.

• m16&32, m16&16, m32&32—A memory operand consisting of data item pairs whose
sizes are indicated on the left and the right side of the ampersand. All memory addressing modes are allowed. The m16&16 and m32&32 operands are used by the BOUND instruction to provide an operand containing an upper and lower bounds for array indices. The m16&32 operand is used by LIDT and LGDT to provide a word with which to load the limit field, and a double word with which to load the base field of the corresponding GDTR and IDTR registers.

• moffs8, moffs16, moffs32—A simple memory variable (memory offset) of type byte,
word, or double word used by some variants of the MOV instruction. The actual address is given by a simple offset relative to the segment base. No ModR/M byte is used in the
instruction. The number shown with moffs indicates its size, which is determined by the
address-size attribute of the instruction.

• Sreg—A segment register. The segment register bit assignments are ES=0, CS=1, SS=2,DS=3, FS=4, and GS=5.

• m32real, m64real, m80real—A single-, double-, and extended-real (respectively)
floating-point operand in memory.

• m16int, m32int, m64int—A word-, short-, and long-integer (respectively) floating-point
operand in memory.

• ST or ST(0)—The top element of the FPU register stack.

• ST(i)—The i th element from the top of the FPU register stack. (i = 0 through 7)

• mm—An MMX™ technology register. The 64-bit MMX™ technology registers are:
MM0 through MM7.

• xmm—A SIMD floating-point register. The 128-bit SIMD floating-point registers are:
XMM0 through XMM7.

• mm/m32—The low order 32 bits of an MMX™ technology register or a 32-bit memory
operand. The 64-bit MMX™ technology registers are: MM0 through MM7. The contents
of memory are found at the address provided by the effective address computation.

• mm/m64—An MMX™ technology register or a 64-bit memory operand. The 64-bit
MMX™ technology registers are: MM0 through MM7. The contents of memory are found
at the address provided by the effective address computation.

• xmm/m32—A SIMD floating-points register or a 32-bit memory operand. The 128-bit
SIMD floating-point registers are XMM0 through XMM7. The contents of memory are
found at the address provided by the effective address computation.

• xmm/m64—A SIMD floating-point register or a 64-bit memory operand. The 64-bit
SIMD floating-point registers are XMM0 through XMM7. The contents of memory are
found at the address provided by the effective address computation.

• xmm/m128—A SIMD floating-point register or a 128-bit memory operand. The 128-bit
SIMD floating-point registers are XMM0 through XMM7. The contents of memory are
found at the address provided by the effective address computation.



DESCRIPTION COLUMN

The “Description” column following the “Instruction” column briefly explains the various

forms of the instruction. The following “Description” and “Operation” sections contain more details of the instruction's operation.


DESCRIPTION

The “Description” section describes the purpose of the instructions and the required operands. It also discusses the effect of the instruction on flags.


Operation

The “Operation” section contains an algorithmic description (written in pseudo-code) of the instruction. The pseudo-code uses a notation similar to the Algol or Pascal language. The algorithms are composed of the following elements:

• Comments are enclosed within the symbol pairs “(*” and “*)”.

• Compound statements are enclosed in keywords, such as IF, THEN, ELSE, and FI for an if statement, DO and OD for a do statement, or CASE ... OF and ESAC for a case statement.

• A register name implies the contents of the register. A register name enclosed in brackets implies the contents of the location whose address is contained in that register. For example, ES:[DI] indicates the contents of the location whose ES segment relative address is in register DI. [SI] indicates the contents of the address contained in register SI relative to SI’s default segment (DS) or overridden segment.

• Parentheses around the “E” in a general-purpose register name, such as (E)SI, indicates that an offset is read from the SI register if the current address-size attribute is 16 or is read from the ESI register if the address-size attribute is 32.

• Brackets are also used for memory operands, where they mean that the contents of the
memory location is a segment-relative offset. For example, [SRC] indicates that the
contents of the source operand is a segment-relative offset.

• A ¬ B; indicates that the value of B is assigned to A.

• The symbols =, ¹, ³, and £ are relational operators used to compare two values, meaning equal, not equal, greater or equal, less or equal, respectively. A relational expression such as A = B is TRUE if the value of A is equal to B; otherwise it is FALSE.

• The expression “<<>> COUNT” indicates that the destination operand
should be shifted left or right, respectively, by the number of bits indicated by the count
operand. The following identifiers are used in the algorithmic descriptions:

• OperandSize and AddressSize—The OperandSize identifier represents the operand-size attribute of the instruction, which is either 16 or 32 bits. The AddressSize identifier
represents the address-size attribute, which is either 16 or 32 bits. For example, the
following pseudo-code indicates that the operand-size attribute depends on the form of the CMPS instruction used.


IF instruction = CMPSW
THEN OperandSize ¬ 16;
ELSE
  IF instruction = CMPSD
  THEN OperandSize ¬ 32;
  FI;
FI;



StackAddrSize—Represents the stack address-size attribute associated with the
instruction, which has a value of 16 or 32 bits.

• SRC—Represents the source operand.

• DEST—Represents the destination operand.

The following functions are used in the algorithmic descriptions:

• ZeroExtend(value)—Returns a value zero-extended to the operand-size attribute of the instruction. For example, if the operand-size attribute is 32, zero extending a byte value of –10 converts the byte from F6H to a doubleword value of 000000F6H. If the value passed to the ZeroExtend function and the operand-size attribute are the same size, ZeroExtend returns the value unaltered.

• SignExtend(value)—Returns a value sign-extended to the operand-size attribute of the instruction. For example, if the operand-size attribute is 32, sign extending a byte
containing the value –10 converts the byte from F6H to a doubleword value of
FFFFFFF6H. If the value passed to the SignExtend function and the operand-size attribute are the same size, SignExtend returns the value unaltered.

• SaturateSignedWordToSignedByte—Converts a signed 16-bit value to a signed 8-bit
value. If the signed 16-bit value is less than –128, it is represented by the saturated value –128 (80H); if it is greater than 127, it is represented by the saturated value 127 (7FH).

• SaturateSignedDwordToSignedWord—Converts a signed 32-bit value to a signed 16-bit value. If the signed 32-bit value is less than –32768, it is represented by the saturated value –32768 (8000H); if it is greater than 32767, it is represented by the saturated value 32767 (7FFFH).

• SaturateSignedWordToUnsignedByte—Converts a signed 16-bit value to an unsigned 8-bit value. If the signed 16-bit value is less than zero, it is represented by the saturated value zero (00H); if it is greater than 255, it is represented by the saturated value 255 (FFH).

• SaturateToSignedByte—Represents the result of an operation as a signed 8-bit value. If the result is less than –128, it is represented by the saturated value –128 (80H); if it is greater than 127, it is represented by the saturated value 127 (7FH).

• SaturateToSignedWord—Represents the result of an operation as a signed 16-bit value. If the result is less than –32768, it is represented by the saturated value –32768 (8000H); if it is greater than 32767, it is represented by the saturated value 32767 (7FFFH).

• SaturateToUnsignedByte—Represents the result of an operation as a signed 8-bit value. If the result is less than zero it is represented by the saturated value zero (00H); if it is greater than 255, it is represented by the saturated value 255 (FFH).

SaturateToUnsignedWord—Represents the result of an operation as a signed 16-bit
value. If the result is less than zero it is represented by the saturated value zero (00H); if it is greater than 65535, it is represented by the saturated value 65535 (FFFFH).

• LowOrderWord(DEST * SRC)—Multiplies a word operand by a word operand and
stores the least significant word of the doubleword result in the destination operand.

• HighOrderWord(DEST * SRC)—Multiplies a word operand by a word operand and
stores the most significant word of the doubleword result in the destination operand.

• Push(value)—Pushes a value onto the stack. The number of bytes pushed is determined by the operand-size attribute of the instruction. Refer to the “Operation” section in “PUSH—Push Word or Doubleword Onto the Stack” in this chapter for more information on the push operation.

• Pop() removes the value from the top of the stack and returns it. The statement EAX ¬
Pop(); assigns to EAX the 32-bit value from the top of the stack. Pop will return either a
word or a doubleword depending on the operand-size attribute. Refer to the “Operation”
section in “POP—Pop a Value from the Stack” in this chapter for more information on the
pop operation.

• PopRegisterStack—Marks the FPU ST(0) register as empty and increments the FPU
register stack pointer (TOP) by 1.

• Switch-Tasks—Performs a task switch.

• Bit(BitBase, BitOffset)—Returns the value of a bit within a bit string, which is a sequence of bits in memory or a register. Bits are numbered from low-order to high-order within registers and within memory bytes. If the base operand is a register, the offset can be in the range 0..31. This offset addresses a bit within the indicated register.