ÈÁÄÌ Æ ÇÈÊÌÁÆ Ë ËÌÅ ÇÊ ÆÌÏÇÊÃ

ÈÈÄÁÆË

ËÌÎ º ÅÍÁÊ

ÇÅÈÍÌÊ Æ ÁÆÇÊÅÌÁÇÆ ËÁÆ



ÓÔÝÖØ ¾¼¼½

ËØ$Ú$ º ÅÙÖ

Æ

Æ

Æ

ÓÒØÒØ×

×ØÖØ 

½ ÁÒØÖÓ ÙØÓÒ ½

¾ ÁÒØÖÙ×ÓÒÏÒ ÇÔ ÖØÒ ËÝ×ØÑ× Ó  

¿ Ì ÈÐØ ÖØØÙÖ ½

! ÁÑÔÐÑÒØÒ ÈÐØ !½

" #ÚÐÙØÒ ÈÐØ "

 ÔÔÐØÓÒ¹ÄÚÐ ÈÖ'ÓÖÑÒ( Ì )Ð× Ï ËÖÚÖ !

ÊÐØ ÏÓÖ+ ,¼

, .ÓÒÐÙ×ÓÒ× Ò )ÙØÙÖ Ê×Ö /¾

ÄÒÙÜ ÔÒ #ÜÙØÓÒ ÌÖ /

Ä×Ø Ó Ì Ð×

Ò

Ä×Ø Ó ÙÖ×

ÔÒ

ÔÒ

Ò

Ò

ÔØÖ ½

ÁÒØÖÓ ÙØÓÒ

Æ

½º½ ÏØ ×  Æ ØÛÓÖ ÔÔÐÒ 

1¬ÒØÓÒ(  ÒØÛÓÖ+ ÔÔÐÒ × ÒÝ ×Ý×ØÑ ÛØ Ø ÔÖÑÖÝ Ò ×ÓÐ Ø×+

Ó' ÒÐÒ Ø ÔÖÓÚ×ÓÒ Ó' ÒØÛÓÖ+ ×ÖÚ× ØÓ ÐÒØ ×Ý×ØÑ׺

½º¾ ÏÝ  Æ Û ÇÔ ÖØÒ ËÝ×Ø Ñ ÖØ ØÙÖ 

Æ

Æ

½º¿ ÓÒØÖÙØÓÒ× Ó Ø× ×× ÖØØÓÒ

¯

¯

¯

¯

¯

¯

½º ÇÙØÐÒ Ó Ø ×× ÖØØÓÒ

ÔØÖ ¾

ÁÒØÖÙ×ÓÒÏÒ ÇÔ Ö ØÒ

ËÝ×ØÑ× Ó  

¾º½ Ê ×ÓÙÖ ÁÒØÖÙ×ÓÒ

¾º¾ ÈÓÐÝ ÁÒØÖÙ×ÓÒ$ÓÑÑÓÒ¹× ÇÔØÑ×ØÓÒ ÓÒ×&¹

Ö & ÀÖÑÙÐ

Æ

Ò

Ò Ò  

Æ

ÚÚ×

¾º¿ Å Ò×Ñ ÁÒØÖÙ×ÓÒ$Ø ÈÖ Ó Ë ØÝ

Æ

¯

¯

¾º¿º½ ËÝÒÖÓÒÓÙ× ÁÒØÖÙ×ÓÒÌÖÔ×

¾º¿º¾ ×ÝÒÖÓÒÓÙ× ÁÒØÖÙ×ÓÒÁÒØÖÖÙÔØ×

¾º ÓÖÖ ÐØ & Ú׺ ÍÒÓÖÖ ÐØ & ÁÒØÖÙ×ÓÒ

¾º+ ÁÒØÖÙ×ÓÒ Ò ÅÙÐØÔÖÓ  ××ÓÖ ËÝ×Ø Ñ×

¾º, ÁÒØÖÙ×ÓÒ -ØÓÖ$Ò ÁÒØÖÙ×ÓÒ Å ØÖ

Ê Ð Ü ÙØÓÒÌ Ñ

Á

Á Ð Ü ÙØÓÒÌ Ñ

ØÔ´µ

¾ºº½ ÄÚÐÓ Ø ÙÖ× Ó ÁÒ¬ÒØ ÁÒØÖÙ×ÓÒ ØÓÖ

Æ

¾º. /ÚÐÙØÒ Ø Ó×Ø Ó ÁÒØÖÙ×ÓÒ

ÅÀÞ ×

Á È Ö ÓÏ ÓÖ 

Æ

ÔØÖ ¿

Ì ÈÐØ ÖØØÙÖ

¯

¯ Æ

¯

¿º½ Ì /ÚÓÐÙØÓÒ Ó ÇÔ ÖØÒ ËÝ×Ø Ñ×

application processes

user mode

kernel kernel mode privilege boundary

devices

application

application

services

virtualisation primitives

physical resources

¿º½º½ Ì ÅÖÓÖÒÐ

Æ

server application processes process

user mode

kernel mode privilege boundary

devices

application processes shared library

user mode

kernel kernel mode privilege boundary

devices

¿º½º¾ ÎÖØÐÐݹËØÖÙØÙÖ" ËÝ×ØÑ×

application processes shared library

user mode

kernel shared memory objects mode privilege boundary kernel

devices

Æ

¿º½º¿ Ì ÆÜØ ËØÔÒ ØÚ ÃÖÒÐ

¿º¾ ÒØÓÑÝ Ó ÈÐ Ø

¿º¾º½ ÈÖÑÖÝ ØÙÖ× Ó È(ÐØ

¿º¾º¾ ËÓÒ"ÖÝ ÖØØÙÖÐ ØÙÖ×

¯

¯

¯

¿º¿  &Ø & à ÖÒ Ð ÈÖÓ  ××ÓÖ

main

CPM ISS HCM NIFmgr UserFSet

client integrated host network user−space page service comm. interface frameset

monitor scheduler module manager controller

¿º¿º½ ÐÒØ È( ÅÓÒØÓÖ

¿º¿º¾ ÁÒØ(ÖØ" ËÖÚ Ë"ÙÐÖ

Æ

¿º¿º¿ ÀÓ×Ø ÓÑÑÙÒØÓÒ ÅÓ "ÙÐ

¿º¿º* Ë"ÙÐÒ( Ò Ø ÈÓÐÐÒ( ÙÒØÓÒ

Æ

¿º ÆÓ ×ÝÒÖÓÒÓÙ× ÁÒØ ÖÖÙÔØ×

¿º+ ËÖ &¹Å ÑÓÖÝ ÓÑÑÙÒØÓÒ

Æ

¯

¯

¯

¯

head tail

next next next status bits D status bits status bits

application application application cache lines data data data

n

inherited next from queue object status data word 0 status word

data word 1 reserved type refs data word 2

data word 3 signal reserved data word 4 speculate done

data 5/link

¿º, Ì ÈРعÔÔÐØÓÒ ÁÒØ Ö

¿ºº½ ÈÁ +××

¯

¯

¯

¯

¿ºº¾ ×ÝÒÖÓÒØÝ ÖØ× ÓÒÙÖÖÒÝ

¿ºº¿ ÊÖÒ× Ö(ÙÑÒØ× Ò" ËÔ ÙÐØÓÒ

Æ

¿ºº* ÇÔØÑ×Ø ËÖÚ ÁÒÚÓ ØÓÒ

Æ

ÔØÖ

ÁÑÔÐÑÒØÒ ÈÐØ

Æ

º½ 2ÙÐ&Ò Ø ÄÒÙÜ»ÈÐ Ø ÀÝÖ&

application processes shared library

user (b) (c) mode

kernel (a) shared memory objects mode privilege boundary Piglet

devices

*º½º½ ÄÒÙÜ ÃÖÒÐ ÀÓ Ó×

¯

¯

¯

Ó ØÐ

*º½º¾ Í×Ò( ÀÓ×Ø ËÖÚ× ÏØÒ È(ÐØ

Æ

ÔÐØ ÐÓ 

*º½º¿ Ì ÀÓ×Ø ÓÑÑÙÒØÓÒ× ÅÓ "ÙÐ

º¾ Ì ÈÐ Ø Æ ØÛÓÖ ËÙ×Ý×Ø Ñ

client queues frameset Tx Rx

frameset TCP/IP service service Rx blocks handler (SBlks) ARP

packet frame mux frame demux filter

frameset structure frame header structure queue pointers next user sys stat flags header 0 chain header 1 tot. len len 0 page 0 len 1 len 2 frame data 0 headers data 1 header n−1 data 2 header n user word 0

user data data page 1 block 0 words

user word 7

data blocks

data page n+1

block n

Ò

Ò

prexfer x=001

enq x+=1

pending process x=010 skip get cmpxchg(x, pending, skipped) x+=1 xfer x=011 dequeue done skipped x=101

process dequeued queued x^=001 x=111 x=100

done dequeue x^=111 x^=100

free

x=000

¯

¯

¯

¯

¯

¯

*º¾º½ ÖÑ ÌÖÒ×Ñ××ÓÒ

*º¾º¾ ÖÑ ÊÔØÓÒ

Æ

Æ speculate speculate speculate | signal next next next next GET_MEM GET_MEM GET_FSET SIGNAL_RX new_cap new_cap new_cap ref n=16 n=16 ref alert_bit=3 ref flags=0

link link link

*º¾º¿ ÖÑ×Ø ÖØÓÒ

ÔØÖ

Ú ÐÙ ØÒ ÈÐØ

¯

¯ Æ

¯

¯

+º½ Ì ÇÚ Ö & Ó Ë ÖÚ ÁÒÚÓ ØÓÒ



ÔÒ

0º½º½ Å×ÙÖÑÒØ Ó ÊÓÙÒ"¹ÌÖÔ ÄØÒÝ

ÔÒ ÔÒ

ÔÒ ÑÙÒ¾ ¹ ¹ ½¼¼¼¼¼ ¹×  ¹¹Ù×¹Ø× ¾¼¼ ¹¹×ØÓÖÑ »Ú»ÒÙÐÐ

ÑÙÒ¾

¹

¹ ½¼¼¼¼¼

¹× 

¹¹Ù×¹Ø× ¾¼¼ ×

¹¹×ØÓÖÑ

»Ú»ÒÙÐÐ

60000

50000 linux-64

Frequency 40000

30000 piglet-256 linux-256 20000 piglet-64 piglet-1024 linux-1024

10000

0 0 100 200 300 400 500 600

Round-Trip Time/us

¯

¯

¯

¯

ÔÒ ¹¹ÔÐØ

Ò

Ò Ò



0º½º¾ ÒÐÝ×× Ó ËÝ×ØѹÐÐ ÇÚÖ"×



Kernel 0 Application

1543 begin_send 2278 Esys_sendto

4000

5466 Eboomerang_tx LDK Kernel 0 Application 6570 Lboomerang_tx 1655 begin_send Lsys_sendto 7155 1828 Euser_tx_poll 7821 end_send 1888 end_send 8000 2462 Luser_tx_poll 2751 Eboomerang_tx 3048 Lboomerang_tx Evortex_interrupt 9753 3453 begin_select 4000

11679 Lvortex_interrupt 12000

23603 Eboomerang_rx

24000 23251 begin_select 25319 Lboomerang_rx

24000

28000 27379 Evortex_interrupt

28000

29268 Enetif_rx 29450 Lnetif_rx 30178 Lvortex_interrupt

32000 31411 Enet_bh 32071 Eip_rcv 32000

34616 end_select

34228/34313 Lip_rcv/Lnet_bh 35313 got_packet

36000

36000 36942 end_select 37848 Esys_recvfrom

40473 Lsys_recvfrom

41134 got_packet

ÔÒ ÔÒ

ÔÒ

×

horsemen moocow logos

100Mb/s 100Mb/s quad 166MHz dual 400MHz Pentium dual 200MHz

Pentium II Pentium Pro

× × ×

Æ

+º¾ ÓÒÙÖÖ ÒØ Ø ÌÖÓÙÔÙØ

¯

¯ ØØ Ô 120

100

80 Piglet Linux 2.0.36 60 Linux 2.2.14 FreeBSD 4.2 40

Mean aggregate throughput (Mb/s) 20

0 012345

Concurrent connections

Ò

¯

ØØ Ô

0º¾º½ ÔÔÐØÓÒ ÌÖÓÙ(ÔÙØ ÒÐÝ××

Å×

Å×

Å× Å×

ÔÒ

Ò ×Ò×Ý× ×ÒØÓ Ä×Ý× ×ÒØÓÒ ×Ò

ØØ Ô

!Ì ÅÅ

!Ì $ËÌ

ÎÆÌ &'Ì&À

ËÌ ÈÊ

Ê- $Ê

+º¿ ÈÖÓ¬ÐÒ Ø ÈÓÐÐÒ -ÙÒØÓÒ

¯

¯

¯

¯

¯

0º¿º½ ÈËÊ ÈÖÓ ××Ò( ÌÑ

35

30

25

20

15

Polling time/us 10

5

0 0 102030405060

Number of clients

ÅÅ !Ì

!Ì $ËÌ &'Ì&À ÎÆÌ

ËÌ ÈÊ

$Ê Ê-

×

0º¿º¾ ÖÑ×Ø ÈÓÐÐÒ( ÇÚÖ"

Ò

Ò

Ò

×

0º¿º¿ ÖÑ ÌÖÒ×Ñ××ÓÒ Ó×Ø

ØØ Ô

×

0º¿º* 1Ú ÈÓÐÐÒ( ÇÚÖ"

×

ØØ Ô

ÔÒ

ÔÒ

× Å ×

ØØ Ô ¢

ØØ Ô ¢

ØØ Ô ¢

ØØ Ô ¢

ÔÒ

¾ ÖÑÓØ Ó×Ø×

× ×

0º¿º0 ÈÍ ÍØÐ×ØÓÒ

ØØ Ô ÔÒ

ØØ Ô ÔÒ

ÔÒ

ØØ Ô

ØØ Ô

ØØ Ô



0º¿º ÒÐÝ×× Ó ÈÓÐÐÒ( ÙÒØÓÒ

Æ

× Æ

Æ

ÔØÖ

ÔÔÐ ØÓÒ¹ÄÚÐ ÈÖÓÖÑ Ò#

Ì Ð × Ï ËÖÚÖ

,º½ ÈÓÖØÒ -Ð× ØÓ ÈÐ Ø

Æ

Æ

Ð.¼¼ºØÑÐ

Ð.ºØÑÐ

Ð.¼ºØÑÐ

Ð.¼¼ºØÑÐ

Ð.ѺØÑÐ

Å×

,º¾ /ÚÐÙØÒ -Ð×³× È ÖÓÖÑÒ

Å×

Æ

Æ

ØØ Ô

120 Piglet (curl) 100

(projected) Piglet (projected) 80 (WebStone)

Linux 2.2.16 60 (curl)

Linux 2.2.16 40 (WebStone) Throughput/Mb/s

20 FreeBSD 4.2 (curl)

0

012345

Ò

ØØ Ô

ÔØÖ

ÊÐ Ø ÏÓÖ%

.º½ ÁÒØÖÙ×ÓÒ

Æ

2º½º½ ÈÓÐÝ ÁÒØÖÙ×ÓÒ

Æ

Æ

2º½º¾ ÅÒ×Ñ ÁÒØÖÙ×ÓÒ

2º½º¿ ÅÙÐØÔÖÓ ××ÓÖ ÁÒØÖÙ×ÓÒ

Æ

.º¾ ÐØ ÖÒØÚ ÇÔ ÖØÒ ËÝ×Ø Ñ ÖØ ØÙÖ ×

¯

¯

¯

2º¾º½ ÅÖÓÖÒÐ×

Æ

2º¾º¾ ÎÖØÐÐݹËØÖÙØÙÖ" ÇÔ ÖØÒ( ËÝ×ØÑ×

2º¾º¿ 3ÜØÒ×4Ð ÇÔ ÖØÒ( ËÝ×ØÑ×

.º¿ ÇÔ ÖØÒ ËÝ×Ø Ñ× ÓÖ Æ ØÛÓÖ ÔÔÐÒ ×

× ×

.º Å ×× ¹× & ËÝ×Ø Ñ×

Æ

Æ

ÔØÖ 

ÓÒÐÙ×ÓÒ× Ò ÙØÙÖ Ê× Ö

8º½ ÒÐÝ×Ò ÇÔ ÖØÒ ËÝ×Ø Ñ ÁÒØÖÙ×ÓÒ

8º¾ ÈÐ Ø$Ê &ÙÒ ÁÒØÖÙ×ÓÒ Ý ØÚØÒ Ø à ÖÒ Ð

8º¿ È ÖÓÖÑÒ Ó Ø ØÚ Ã ÖÒ Ð

8º -ÙØÙÖ ÏÓÖ

5º*º½ ÇÔØÑ×Ò( Ø ØÚ ÃÖÒÐ

Ò Ò

5º*º¾ 3ÚÐÙØÓÒ Ó ÐØÖÒØÚ ÔÔÐØÓÒ×

ÔÔ ÒÜ 

ÄÒÙÜ ÔÒ ÜÙØÓÒ ÌÖ 

ÜÜÜ ÄÜÜÜ

Ò1ÔÒÖ2 ½¿¾4½4445

Ò1×Ò2 ½¿¾4½5¼¿5

×Ý×1×ÒØÓ2 ½¿¾4½5½½6

ÒØ1×ÒÑ×2 ½¿¾4½5½4.6

ÖÛ1×ÒØÓ2 ½¿¾4½5¾½¼¼

Ô1ÙÐ1ÜÑØ2 ½¿¾4½5¾¿

ÓÓÑÖÒ1ØÜ2 ½¿¾4½5¿¾

ÄÓÓÑÖÒ1ØÜ2 ½¿¾4½5.

ÄÔ1ÙÐ1ÜÑØ2 ½¿¾4½5.¼6

ÄÖÛ1×ÒØÓ2 ½¿¾4½5.6¼5

ÄÒØ1×ÒÑ×2 ½¿¾4½5.5½5

Ä×Ý×1×ÒØÓ2 ½¿¾4½5¼.½

Ò1×Ò2 ½¿¾4½56½6

ÚÓÖØÜ1ÒØÖÖÙÔØ2 ½¿¾4½545

ÚÓÖØÜ1ÓÛÒ1 ÓÑÔÐØ2 ½¿¾4½55½¼.

ÄÚÓÖØÜ1ÒØÖÖÙÔØ2 ½¿¾4¾¼¼.6.

Ò1×Ð Ø2 ½¿¾4¾½¾½6

ÚÓÖØÜ1ÒØÖÖÙÔØ2 ½¿¾4¾½¾6.

ÚÓÖØÜ1ÙÔ1 ÓÑÔÐØ2 ½¿¾4¾½6½6

ÒØ1ÖÜ2 ½¿¾4¾½4½

ÄÒØ1ÖÜ2 ½¿¾4¾½4¿

ÄÚÓÖØÜ1ÒØÖÖÙÔØ2 ½¿¾4¾½5¼6

ÒØ12 ½¿¾4¾¾¼¿¼6

Ô1Ö Ú2 ½¿¾4¾¾¼56

 ÑÔ1Ö Ú2 ½¿¾4¾¾¾¼4

Ä ÑÔ1Ö Ú2 ½¿¾4¾¾¾6¾¼

ÄÔ1Ö Ú2 ½¿¾4¾¾¿½¾

ÄÒØ12 ½¿¾4¾¾¿¾¼5

Ò1×Ð Ø2 ½¿¾4¾¾.4¿4

×Ý×1Ö ÚÖÓÑ2 ½¿¾4¾¾6

ÒØ1Ö ÚÑ×2 ½¿¾4¾¾6¿¼4

ÖÛ1Ö ÚÑ×2 ½¿¾4¾¾6.¼

ÄÖÛ1Ö ÚÑ×2 ½¿¾4¾¾44¾

ÄÒØ1Ö ÚÑ×2 ½¿¾4¾¾44½

Ä×Ý×1Ö ÚÖÓÑ2 ½¿¾4¾¾5¿5

ÓØ1Ô Ø2 ½¿¾4¾¿¼¼¿¼

 ÐÓÖ ÔÝ

ÛÛÛºÔ ºÓÖ»ØØÔºØÑÐ

ÛÛÛº×ÕÙ¹  ºÓÖ»

ÛÛÛº ÖغÓÖ»Ú×ÓÖ×»&'¹¾¼¼½¹¼¾ºØÑÐ

ÛÛÛºÚÖ ºÓÖ

Æ



ÓÛÒÐÓºÒØк ÓÑ»×Ò»ÒØÛÓÖ»ÔÖÓÖ»

¾65¼½ºÔ

ÛÛÛº× ºÓÖ»ÔÖÓÙ Ø×»9ÁÆ;»

ÛÛÛºÛÓÖÐ ÓѺ ÓÑ»ÓÙØ Ø ÓÑÔÒÝ» Ö× ÙÔ»

×ØÓÖÝ»ÛØÁ׺ÔØÑÐ ÒØÖÒØ

Æ

ÛÛÛºÑÒ Öغ ÓÑ»Û×ØÓÒ»

Æ

ÛÛÛº к Ѻ ºÙ»Ù×Ö×»Ô½¼»ºÔ×

ÛÛÛºÖ×Ö׺ÓÖ

ÛÛÛº×ÒÑкÓÖ»

ÙÖкÜܺ×

Æ