2016年1月30日 星期六

siege - HTTP regression testing and benchmarking utility

突然發現一個工具 siege, 它可以用來模擬送大量的要求(request)到網頁伺服器上.

比如底下的範例:
siege -d10 -c10 -t1m http://192.168.0.1/test.html

-d 10 表示每個要求之間的最大延遲為10秒
-c 10 代表同時有10個使用者
-t1m 表示全部測試時間為1分鐘

另外看到一個不錯的想法, 可以用樹莓派來建構實驗用網路架構
raspberry-pi-dramble-lemp-redis-architecture.png

參考資料:
Raspberry Pi Server Cluster Tests
geerlingguy/raspberry-pi-dramble

2016年1月19日 星期二

Gem5 Memory Model Classes List

 ./build/ARM/gem5.opt configs/example/fs.py --list-mem-types
gem5 Simulator System.  http://gem5.org
gem5 is copyrighted software; use the --copyright option for details.

gem5 compiled Jan  6 2016 12:56:49
gem5 started Jan 19 2016 14:09:40
gem5 executing on ubuntu-core40
command line: ./build/ARM/gem5.opt configs/example/fs.py --list-mem-types

Available memory classes:
        GDDR5_4000_x64
        HMC_2500_x32
        DRAMCtrl
        LPDDR3_1600_x32
        LPDDR2_S4_1066_x32
        WideIO_200_x128
        DDR3_1600_x64
        RubyMemoryControl
        DDR3_2133_x64
        SimpleMemory
        DDR4_2400_x64

2016年1月6日 星期三

Gem5 Simulator

官方網址: http://www.gem5.org/Main_Page

它是什麼呢? 官方的說明如下:
The gem5 simulator is a modular platform for computer-system architecture research, encompassing system-level architecture as well as processor microarchitecture.

你可以先看看底下的Video, 它介紹了Gem5運行過程以及最後跑起來的狀況:


首先要下載Gem5的系統模擬程式 (Gem5 Download)
它是使用hg指令下載, 因此你的系統必需有安裝mercurial套件.
(1)sudo apt-get install mercurial
(2)hg clone http://repo.gem5.org/gem5-stable
你也可以先去http://repo.gem5.org/gem5-stable看看過去開發的歷史狀況
下圖的參考過程:
載完之後, 你會看到下面的檔案資料
這個目錄的架構大約如下面的介紹:
The basic source release includes these subdirectories:
   - configs: example simulation configuration scripts
   - ext: less-common external packages needed to build gem5
   - src: source code of the gem5 simulator
   - system: source for some optional system software for simulated systems
   - tests: regression tests
   - util: useful utility programs and files

下載完gem5原始程式後, 就可以編譯gem5的執行檔出來了.
Gem5採用SCons作為其開發工具, 因此你除了需要先安裝編譯程之外還需要安裝SCons相關的東西.
(1)sudo apt-get install scons swig python python-dev zlib1g-dev m4 protobuf{-c,}-compiler libgoogle-perftools-dev g++ build-essential
(2)scons build/ARM/gem5.opt -j 20   <==這個是開始編譯Gem5.

編譯方式可分為gem5.debug, gem5.opt, gem5.fast, gem5.prof四種

下載所需要的系統映像檔
它目前有提供三種(1)ARM(2)X86(3)ALPHA, 我們先下載ARM的, 因為前面是編譯ARM的版本.
(1)下載ARM Full-System Files
wget http://www.gem5.org/dist/current/arm/aarch-system-2014-10.tar.xz

(2)先建個目錄, 進到這個目錄把aarch-system-2014-10.tar.xz解壓縮
mkdir aarch-system
cd aarch-system
tar vxf ../aarch-system-2014-10.tar.xz

使用Gem5系統模擬器把系統映像檔運行起來
這時要回到gem5-stable的目錄下
首先要先做一件事, 設定一個M5_PATH環境變數, 將它的內容設定到你的系統映像檔位置.
export M5_PATH=/home/stanley/aarch-system
當然你也可以使用如同影片裏的方法, 將這個export放到~/.bashrc裏去

接著就可以開始運行模擬了, 輸入下面的指令.
build/ARM/gem5.opt -d /tmp/output configs/example/fs.py

模擬的方式也可分為兩種
(1)Full System(FS)

  • For booting operating systems
  • Models bare hardware, including devices
  • Interrupts, exceptions, privileged instructions, fault handlers
  • Simulated UART output
  • Simulated frame buffer output 

(2)Syscall Emulation(SE)

  • For running individual applications, or set of applications on MP
  • Models user-visible ISA plus common system calls
  • System calls emulated, typically by calling host OS
  • Simplified address translation model, no scheduling 


執行過程如下:
gem5 Simulator System.  http://gem5.org
gem5 is copyrighted software; use the --copyright option for details.

gem5 compiled Jan  6 2016 12:56:49
gem5 started Jan  6 2016 14:21:30
gem5 executing on ubuntu-core40
command line: build/ARM/gem5.opt -d /tmp/output configs/example/fs.py

Global frequency set at 1000000000000 ticks per second
warn: DRAM device capacity (8192 Mbytes) does not match the address range assigned (512 Mbytes)
info: kernel located at: /home/stanley/gem5/aarch-system/binaries/vmlinux.aarch32.ll_20131205.0-gem5
Listening for system connection on port 5900
Listening for system connection on port 3456
0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
info: Using bootloader at address 0x10
info: Using kernel entry physical address at 0x80008000
info: Loading DTB file: /home/stanley/gem5/aarch-system/binaries/vexpress.aarch32.ll_20131205.0-gem5.1cpu.dtb at address 0x88000000
**** REAL SIMULATION ****
warn: Existing EnergyCtrl, but no enabled DVFSHandler found.
info: Entering event queue @ 0.  Starting simulation...
warn: Not doing anything for miscreg ACTLR
warn: Not doing anything for write of miscreg ACTLR
warn: The clidr register always reports 0 caches.
warn: clidr LoUIS field of 0b001 to match current ARM implementations.
warn: The csselr register isn't implemented.
warn:   instruction 'mcr dccmvau' unimplemented
warn:   instruction 'mcr icimvau' unimplemented
warn:   instruction 'mcr bpiallis' unimplemented
warn:   instruction 'mcr icialluis' unimplemented
warn:   instruction 'mcr dccimvac' unimplemented
warn: Tried to read RealView I/O at offset 0x60 that doesn't exist
warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist
warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist
warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist
warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist
warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist
warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist
warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist
warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist
warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist
info: trap check M:0 N:0 1:0 2:0 hdcr 0, hcptr 3fff, hstr 0
info: trap check M:0 N:0 1:0 2:0 hdcr 0, hcptr 3fff, hstr 0
info: trap check M:0 N:0 1:0 2:0 hdcr 0, hcptr 3fff, hstr 0
info: trap check M:0 N:0 1:0 2:0 hdcr 0, hcptr 3fff, hstr 0
info: trap check M:0 N:0 1:0 2:0 hdcr 0, hcptr 3fff, hstr 0
info: trap check M:0 N:0 1:0 2:0 hdcr 0, hcptr 3fff, hstr 0
info: trap check M:0 N:0 1:0 2:0 hdcr 0, hcptr 3fff, hstr 0
54397052500: system.terminal: attach terminal 0
info: trap check M:0 N:0 1:0 2:0 hdcr 0, hcptr 3fff, hstr 0
info: trap check M:0 N:0 1:0 2:0 hdcr 0, hcptr 3fff, hstr 0
info: trap check M:0 N:0 1:0 2:0 hdcr 0, hcptr 3fff, hstr 0
info: trap check M:0 N:0 1:0 2:0 hdcr 0, hcptr 3fff, hstr 0
info: trap check M:0 N:0 1:0 2:0 hdcr 0, hcptr 3fff, hstr 0
info: trap check M:0 N:0 1:0 2:0 hdcr 0, hcptr 3fff, hstr 0
info: trap check M:0 N:0 1:0 2:0 hdcr 0, hcptr 3fff, hstr 0
info: trap check M:0 N:0 1:0 2:0 hdcr 0, hcptr 3fff, hstr 0
warn: CP14 unimplemented crn[1], opc1[0], crm[3], opc2[4]
warn: CP14 unimplemented crn[1], opc1[0], crm[0], opc2[4]
warn: CP14 unimplemented crn[0], opc1[0], crm[7], opc2[0]
warn: Returning zero for read from miscreg pmcr
warn: Ignoring write to miscreg pmcntenclr
warn: Ignoring write to miscreg pmintenclr
warn: Ignoring write to miscreg pmovsr
warn: Ignoring write to miscreg pmcr
上面這個是模擬器的訊息. 接下來我們要開一個新的terminal使用telnet連上這台機器
telnet 127.0.0.1 3456
然後你會看到開機訊息如下
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
==== m5 slave terminal: Terminal 0 ====
Booting Linux on physical CPU 0x0
Initializing cgroup subsys cpuset
Linux version 3.13.0-rc2 (tony@vamp) (gcc version 4.8.2 (Ubuntu/Linaro 4.8.2-16ubuntu4) ) #1 SMP PREEMPT Mon Oct 13 15:09:23 EDT 2014
Kernel was built at commit id ''
CPU: ARMv7 Processor [410fc0f0] revision 0 (ARMv7), cr=10c53c7d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine model: V2P-CA15
bootconsole [earlycon0] enabled
Memory policy: Data cache writealloc
kdebugv2m: Following are test values to confirm proper working
kdebugv2m: Ranges 42000000 0
kdebugv2m: Regs 30000000 1000000
kdebugv2m: Virtual-Reg f0000000
kdebugv2m: pci node addr_cells 3
kdebugv2m: pci node size_cells 2
kdebugv2m: motherboard addr_cells 2
On node 0 totalpages: 131072
free_area_init_node: node 0, pgdat 8072dcc0, node_mem_map 8078f000
  Normal zone: 1024 pages used for memmap
  Normal zone: 0 pages reserved
  Normal zone: 131072 pages, LIFO batch:31
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956969942ns
PERCPU: Embedded 8 pages/cpu @80b97000 s11648 r8192 d12928 u32768
pcpu-alloc: s11648 r8192 d12928 u32768 alloc=8*4096
pcpu-alloc: [0] 0
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
Kernel command line: earlyprintk=pl011,0x1c090000 console=ttyAMA0 lpj=19988480 norandmaps rw loglevel=8 mem=512MB root=/dev/sda1
PID hash table entries: 2048 (order: 1, 8192 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 495584K/524288K available (5248K kernel code, 249K rwdata, 1540K rodata, 295K init, 368K bss, 28704K reserved, 0K highmem)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    vmalloc : 0xa0800000 - 0xff000000   (1512 MB)
    lowmem  : 0x80000000 - 0xa0000000   ( 512 MB)
    pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
    modules : 0x7f000000 - 0x7fe00000   (  14 MB)
      .text : 0x80008000 - 0x806a942c   (6790 kB)
      .init : 0x806aa000 - 0x806f3d80   ( 296 kB)
      .data : 0x806f4000 - 0x80732754   ( 250 kB)
       .bss : 0x80732754 - 0x8078e9d8   ( 369 kB)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Preemptible hierarchical RCU implementation.
        RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1.
NR_IRQS:16 nr_irqs:16 16
Architected cp15 timer(s) running at 25.16MHz (phys).
sched_clock: 56 bits at 25MHz, resolution 39ns, wraps every 2730666655744ns
Switching to timer-based delay loop
Console: colour dummy device 80x30
Calibrating delay loop (skipped) preset value.. 3997.69 BogoMIPS (lpj=19988480)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
CPU0: update cpu_power 1024
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x804fee68 - 0x804fee9c
Brought up 1 CPUs
SMP: Total of 1 processors activated.
CPU: All CPU(s) started in SVC mode.
VFP support v0.3: implementor 41 architecture 4 part 30 variant a rev 0
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
of_amba_device_create(): amba_device_add() failed (-19) for /smb/motherboard/iofpga@3,00000000/sysctl@020000
of_amba_device_create(): amba_device_add() failed (-19) for /smb/motherboard/iofpga@3,00000000/aaci@040000
of_amba_device_create(): amba_device_add() failed (-19) for /smb/motherboard/iofpga@3,00000000/mmci@050000
of_amba_device_create(): amba_device_add() failed (-19) for /smb/motherboard/iofpga@3,00000000/uart@0a0000
of_amba_device_create(): amba_device_add() failed (-19) for /smb/motherboard/iofpga@3,00000000/uart@0b0000
of_amba_device_create(): amba_device_add() failed (-19) for /smb/motherboard/iofpga@3,00000000/uart@0c0000
of_amba_device_create(): amba_device_add() failed (-19) for /smb/motherboard/iofpga@3,00000000/wdt@0f0000
hw-breakpoint: Debug register access (0xee113e93) caused undefined instruction on CPU 0
hw-breakpoint: Debug register access (0xee013e90) caused undefined instruction on CPU 0
hw-breakpoint: Debug register access (0xee003e17) caused undefined instruction on CPU 0
hw-breakpoint: CPU 0 failed to disable vector catch
Serial: AMBA PL011 UART driver
1c090000.uart: ttyAMA0 at MMIO 0x1c090000 (irq = 37, base_baud = 0) is a PL011 rev3
console [ttyAMA0] enabled
console [ttyAMA0] enabled
bootconsole [earlycon0] disabled
bootconsole [earlycon0] disabled
PCI host bridge to bus 0000:00
pci_bus 0000:00: root bus resource [io  0x0000-0xffffffff]
pci_bus 0000:00: root bus resource [mem 0x00000000-0xffffffff]
pci_bus 0000:00: root bus resource [bus 00-ff]
pci 0000:00:00.0: [8086:1075] type 00 class 0x020000
pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x0001ffff]
pci 0000:00:00.0: reg 0x30: [mem 0x00000000-0x000007ff pref]
pci 0000:00:01.0: [8086:7111] type 00 class 0x010185
pci 0000:00:01.0: reg 0x10: [io  0x0000-0x0007]
pci 0000:00:01.0: reg 0x14: [io  0x0000-0x0003]
pci 0000:00:01.0: reg 0x18: [io  0x0000-0x0007]
pci 0000:00:01.0: reg 0x1c: [io  0x0000-0x0003]
pci 0000:00:01.0: reg 0x20: [io  0x0000-0x000f]
pci 0000:00:01.0: reg 0x30: [mem 0x00000000-0x000007ff pref]
PCI: bus0: Fast back to back transfers disabled
pci 0000:00:00.0: BAR 0: assigned [mem 0x40000000-0x4001ffff]
pci 0000:00:00.0: BAR 6: assigned [mem 0x40020000-0x400207ff pref]
pci 0000:00:01.0: BAR 6: assigned [mem 0x40020800-0x40020fff pref]
pci 0000:00:01.0: BAR 4: assigned [io  0x2f000000-0x2f00000f]
pci 0000:00:01.0: BAR 0: assigned [io  0x2f000010-0x2f000017]
pci 0000:00:01.0: BAR 2: assigned [io  0x2f000018-0x2f00001f]
pci 0000:00:01.0: BAR 1: assigned [io  0x2f000020-0x2f000023]
pci 0000:00:01.0: BAR 3: assigned [io  0x2f000024-0x2f000027]
pci_bus 0000:00: resource 4 [io  0x0000-0xffffffff]
pci_bus 0000:00: resource 5 [mem 0x00000000-0xffffffff]
PCI map irq: slot 0, pin 1, devslot 0, irq: 68
PCI map irq: slot 1, pin 2, devslot 1, irq: 69
bio: create slab <bio-0> at 0
vgaarb: loaded
SCSI subsystem initialized
libata version 3.00 loaded.
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
PTP clock support registered
Advanced Linux Sound Architecture Driver Initialized.
Switched to clocksource arch_sys_counter
NET: Registered protocol family 2
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP: reno registered
UDP hash table entries: 256 (order: 1, 8192 bytes)
UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
PCI: CLS 64 bytes, default 64
hw perfevents: enabled with ARMv7_Cortex_A15 PMU driver, 1 counters available
jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
msgmni has been set to 967
io scheduler noop registered (default)
brd: module loaded
loop: module loaded
ata_piix 0000:00:01.0: version 2.13
PCI: enabling device 0000:00:01.0 (0040 -> 0041)
scsi0 : ata_piix
scsi1 : ata_piix
ata1: PATA max UDMA/33 cmd 0x2f000010 ctl 0x2f000020 bmdma 0x2f000000 irq 69
ata2: PATA max UDMA/33 cmd 0x2f000018 ctl 0x2f000024 bmdma 0x2f000008 irq 69
e100: Intel(R) PRO/100 Network Driver, 3.5.24-k2-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
e1000: Intel(R) PRO/1000 Network Driver - version 7.3.21-k8-NAPI
e1000: Copyright (c) 1999-2006 Intel Corporation.
PCI: enabling device 0000:00:00.0 (0040 -> 0042)
ata1.00: ATA-7: M5 IDE Disk, , max UDMA/66
ata1.00: 1048320 sectors, multi 0: LBA
ata1.00: configured for UDMA/33
scsi 0:0:0:0: Direct-Access     ATA      M5 IDE Disk      n/a  PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 1048320 512-byte logical blocks: (536 MB/511 MiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
 sda: sda1
sd 0:0:0:0: Attached scsi generic sg0 type 0
sd 0:0:0:0: [sda] Attached SCSI disk
e1000 0000:00:00.0 eth0: (PCI:33MHz:32-bit) 00:90:00:00:00:01
e1000 0000:00:00.0 eth0: Intel(R) PRO/1000 Network Connection
e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k
e1000e: Copyright(c) 1999 - 2013 Intel Corporation.
igb: Intel(R) Gigabit Ethernet Network Driver - version 5.0.5-k
igb: Copyright (c) 2007-2013 Intel Corporation.
igbvf: Intel(R) Gigabit Virtual Function Network Driver - version 2.0.2-k
igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
ixgbe: Intel(R) 10 Gigabit PCI Express Network Driver - version 3.15.1-k
ixgbe: Copyright (c) 1999-2013 Intel Corporation.
ixgbevf: Intel(R) 10 Gigabit PCI Express Virtual Function Network Driver - version 2.11.3-k
ixgbevf: Copyright (c) 2009 - 2012 Intel Corporation.
ixgb: Intel(R) PRO/10GbE Network Driver - version 1.0.135-k2-NAPI
ixgb: Copyright (c) 1999-2008 Intel Corporation.
smsc911x: Driver version 2008-10-21
smsc911x 1a000000.ethernet (unregistered net_device): couldn't get clock -2
nxp-isp1760 1b000000.usb: NXP ISP1760 USB Host Controller
nxp-isp1760 1b000000.usb: new USB bus registered, assigned bus number 1
nxp-isp1760 1b000000.usb: Scratch test failed.
nxp-isp1760 1b000000.usb: can't setup: -19
nxp-isp1760 1b000000.usb: USB bus 1 deregistered
usbcore: registered new interface driver usb-storage
mousedev: PS/2 mouse device common for all mice
rtc-pl031 1c170000.rtc: rtc core: registered pl031 as rtc0
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
ashmem: initialized
logger: created 256K log 'log_main'
logger: created 256K log 'log_events'
logger: created 256K log 'log_radio'
logger: created 256K log 'log_system'
oprofile: using timer interrupt.
TCP: cubic registered
NET: Registered protocol family 10
NET: Registered protocol family 17
rtc-pl031 1c170000.rtc: setting system clock to 2009-01-01 00:00:00 UTC (1230768000)
ALSA device list:
  No soundcards found.
input: AT Raw Set 2 keyboard as /devices/smb.14/motherboard.15/iofpga.17/1c060000.kmi/serio0/input/input0
input: touchkitPS/2 eGalax Touchscreen as /devices/smb.14/motherboard.15/iofpga.17/1c070000.kmi/serio1/input/input2
VFS: Mounted root (ext2 filesystem) on device 8:1.
Freeing unused kernel memory: 292K (806aa000 - 806f3000)
init started: BusyBox v1.15.3 (2010-05-07 01:27:07 BST)
starting pid 673, tty '': '/etc/rc.d/rc.local'
warning: can't open /etc/mtab: No such file or directory
Thu Jan  1 00:00:02 UTC 2009
S: devpts
Thu Jan  1 00:00:02 UTC 2009
starting pid 694, tty '': '/sbin/getty -L ttySA0 38400 vt100'

AEL login: root
root


BusyBox v1.15.3 (2010-05-07 01:27:07 BST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

#

接下來我們看看/tmp/output這個目錄下的東西, 共產生了四個檔案
config.ini及config.json是屬於Files describing the configuration
(1)config.ini    - ini formatted file that has all the objects and their parameters
(2)config.json - json formatted file which is easy to parse for input into other simulators (e.g. power)
stats.txt屬於Statistics
(3)stats.txt
*.terminal屬於系統資訊輸出檔
(4)system.terminal - Serial port output from the simulation

底下是config.ini的內容
[root]
type=Root
children=system
eventq_index=0
full_system=true
sim_quantum=0
time_sync_enable=false
time_sync_period=100000000000
time_sync_spin_threshold=100000000

[system]
type=LinuxArmSystem
children=bridge cf0 clk_domain cpu cpu_clk_domain cpu_voltage_domain dvfs_handler intrctrl iobridge iobus mem_ctrls membus realview terminal vncserver voltage_domain
atags_addr=134217728
boot_loader=/home/stanley/gem5/aarch-system/binaries/boot_emm.arm
boot_osflags=earlyprintk=pl011,0x1c090000 console=ttyAMA0 lpj=19988480 norandmaps rw loglevel=8 mem=512MB root=/dev/sda1
cache_line_size=64
clk_domain=system.clk_domain
dtb_filename=/home/stanley/gem5/aarch-system/binaries/vexpress.aarch32.ll_20131205.0-gem5.1cpu.dtb
early_kernel_symbols=false
enable_context_switch_stats_dump=false
eventq_index=0
flags_addr=469827632
gic_cpu_addr=738205696
have_large_asid_64=false
have_lpae=false
have_security=false
have_virtualization=false
highest_el_is_64=false
init_param=0
kernel=/home/stanley/gem5/aarch-system/binaries/vmlinux.aarch32.ll_20131205.0-gem5
kernel_addr_check=true
load_addr_mask=268435455
load_offset=2147483648
machine_type=VExpress_EMM
mem_mode=atomic
mem_ranges=2147483648:2684354559
memories=system.mem_ctrls system.realview.nvmem system.realview.vram
mmap_using_noreserve=false
multi_proc=true
num_work_ids=16
panic_on_oops=false
panic_on_panic=false
phys_addr_range_64=40
readfile=
reset_addr_64=0
symbolfile=
work_begin_ckpt_count=0
work_begin_cpu_id_exit=-1
work_begin_exit_count=0
work_cpus_ckpt_count=0
work_end_ckpt_count=0
work_end_exit_count=0
work_item_id=-1
system_port=system.membus.slave[1]

[system.bridge]
type=Bridge
clk_domain=system.clk_domain
delay=50000
eventq_index=0
ranges=788529152:805306367 721420288:725614591 805306368:1073741823 1073741824:1610612735 402653184:469762047 469762048:536870911
req_size=16
resp_size=16
master=system.iobus.slave[0]
slave=system.membus.master[0]

[system.cf0]
type=IdeDisk
children=image
delay=1000000
driveID=master
eventq_index=0
image=system.cf0.image

[system.cf0.image]
type=CowDiskImage
children=child
child=system.cf0.image.child
eventq_index=0
image_file=
read_only=false
table_size=65536

[system.cf0.image.child]
type=RawDiskImage
eventq_index=0
image_file=/home/stanley/gem5/aarch-system/disks/linux-aarch32-ael.img
read_only=true

[system.clk_domain]
type=SrcClockDomain
clock=1000
domain_id=-1
eventq_index=0
init_perf_level=0
voltage_domain=system.voltage_domain

[system.cpu]
type=AtomicSimpleCPU
children=dstage2_mmu dtb interrupts isa istage2_mmu itb tracer
branchPred=Null
checker=Null
clk_domain=system.cpu_clk_domain
cpu_id=0
do_checkpoint_insts=true
do_quiesce=true
do_statistics_insts=true
dstage2_mmu=system.cpu.dstage2_mmu
dtb=system.cpu.dtb
eventq_index=0
fastmem=false
function_trace=false
function_trace_start=0
interrupts=system.cpu.interrupts
isa=system.cpu.isa
istage2_mmu=system.cpu.istage2_mmu
itb=system.cpu.itb
max_insts_all_threads=0
max_insts_any_thread=0
max_loads_all_threads=0
max_loads_any_thread=0
numThreads=1
profile=0
progress_interval=0
simpoint_start_insts=
simulate_data_stalls=false
simulate_inst_stalls=false
socket_id=0
switched_out=false
system=system
tracer=system.cpu.tracer
width=1
workload=
dcache_port=system.membus.slave[4]
icache_port=system.membus.slave[3]

[system.cpu.dstage2_mmu]
type=ArmStage2MMU
children=stage2_tlb
eventq_index=0
stage2_tlb=system.cpu.dstage2_mmu.stage2_tlb
sys=system
tlb=system.cpu.dtb

[system.cpu.dstage2_mmu.stage2_tlb]
type=ArmTLB
children=walker
eventq_index=0
is_stage2=true
size=32
walker=system.cpu.dstage2_mmu.stage2_tlb.walker

[system.cpu.dstage2_mmu.stage2_tlb.walker]
type=ArmTableWalker
clk_domain=system.cpu_clk_domain
eventq_index=0
is_stage2=true
num_squash_per_cycle=2
sys=system

[system.cpu.dtb]
type=ArmTLB
children=walker
eventq_index=0
is_stage2=false
size=64
walker=system.cpu.dtb.walker

[system.cpu.dtb.walker]
type=ArmTableWalker
clk_domain=system.cpu_clk_domain
eventq_index=0
is_stage2=false
num_squash_per_cycle=2
sys=system
port=system.membus.slave[6]

[system.cpu.interrupts]
type=ArmInterrupts
eventq_index=0

[system.cpu.isa]
type=ArmISA
eventq_index=0
fpsid=1090793632
id_aa64afr0_el1=0
id_aa64afr1_el1=0
id_aa64dfr0_el1=1052678
id_aa64dfr1_el1=0
id_aa64isar0_el1=0
id_aa64isar1_el1=0
id_aa64mmfr0_el1=15728642
id_aa64mmfr1_el1=0
id_aa64pfr0_el1=17
id_aa64pfr1_el1=0
id_isar0=34607377
id_isar1=34677009
id_isar2=555950401
id_isar3=17899825
id_isar4=268501314
id_isar5=0
id_mmfr0=270536963
id_mmfr1=0
id_mmfr2=19070976
id_mmfr3=34611729
id_pfr0=49
id_pfr1=4113
midr=1091551472
pmu=Null
system=system

[system.cpu.istage2_mmu]
type=ArmStage2MMU
children=stage2_tlb
eventq_index=0
stage2_tlb=system.cpu.istage2_mmu.stage2_tlb
sys=system
tlb=system.cpu.itb

[system.cpu.istage2_mmu.stage2_tlb]
type=ArmTLB
children=walker
eventq_index=0
is_stage2=true
size=32
walker=system.cpu.istage2_mmu.stage2_tlb.walker

[system.cpu.istage2_mmu.stage2_tlb.walker]
type=ArmTableWalker
clk_domain=system.cpu_clk_domain
eventq_index=0
is_stage2=true
num_squash_per_cycle=2
sys=system

[system.cpu.itb]
type=ArmTLB
children=walker
eventq_index=0
is_stage2=false
size=64
walker=system.cpu.itb.walker

[system.cpu.itb.walker]
type=ArmTableWalker
clk_domain=system.cpu_clk_domain
eventq_index=0
is_stage2=false
num_squash_per_cycle=2
sys=system
port=system.membus.slave[5]

[system.cpu.tracer]
type=ExeTracer
eventq_index=0

[system.cpu_clk_domain]
type=SrcClockDomain
clock=500
domain_id=-1
eventq_index=0
init_perf_level=0
voltage_domain=system.cpu_voltage_domain

[system.cpu_voltage_domain]
type=VoltageDomain
eventq_index=0
voltage=1.000000

[system.dvfs_handler]
type=DVFSHandler
domains=
enable=false
eventq_index=0
sys_clk_domain=system.clk_domain
transition_latency=100000000

[system.intrctrl]
type=IntrControl
eventq_index=0
sys=system

[system.iobridge]
type=Bridge
clk_domain=system.clk_domain
delay=50000
eventq_index=0
ranges=2147483648:2684354559
req_size=16
resp_size=16
master=system.membus.slave[2]
slave=system.iobus.master[27]

[system.iobus]
type=NoncoherentXBar
clk_domain=system.clk_domain
eventq_index=0
forward_latency=1
frontend_latency=2
response_latency=2
use_default_range=true
width=16
default=system.realview.pciconfig.pio
master=system.realview.uart.pio system.realview.realview_io.pio system.realview.timer0.pio system.realview.timer1.pio system.realview.clcd.pio system.realview.hdlcd.pio system.realview.kmi0.pio system.realview.kmi1.pio system.realview.cf_ctrl.pio system.realview.cf_ctrl.config system.realview.rtc.pio system.realview.vram.port system.realview.l2x0_fake.pio system.realview.uart1_fake.pio system.realview.uart2_fake.pio system.realview.uart3_fake.pio system.realview.sp810_fake.pio system.realview.watchdog_fake.pio system.realview.aaci_fake.pio system.realview.lan_fake.pio system.realview.usb_fake.pio system.realview.mmc_fake.pio system.realview.energy_ctrl.pio system.realview.ide.pio system.realview.ide.config system.realview.ethernet.pio system.realview.ethernet.config system.iobridge.slave
slave=system.bridge.master system.realview.clcd.dma system.realview.cf_ctrl.dma system.realview.ide.dma system.realview.ethernet.dma

[system.mem_ctrls]
type=DRAMCtrl
IDD0=0.075000
IDD02=0.000000
IDD2N=0.050000
IDD2N2=0.000000
IDD2P0=0.000000
IDD2P02=0.000000
IDD2P1=0.000000
IDD2P12=0.000000
IDD3N=0.057000
IDD3N2=0.000000
IDD3P0=0.000000
IDD3P02=0.000000
IDD3P1=0.000000
IDD3P12=0.000000
IDD4R=0.187000
IDD4R2=0.000000
IDD4W=0.165000
IDD4W2=0.000000
IDD5=0.220000
IDD52=0.000000
IDD6=0.000000
IDD62=0.000000
VDD=1.500000
VDD2=0.000000
activation_limit=4
addr_mapping=RoRaBaCoCh
bank_groups_per_rank=0
banks_per_rank=8
burst_length=8
channels=1
clk_domain=system.clk_domain
conf_table_reported=true
device_bus_width=8
device_rowbuffer_size=1024
device_size=536870912
devices_per_rank=8
dll=true
eventq_index=0
in_addr_map=true
max_accesses_per_row=16
mem_sched_policy=frfcfs
min_writes_per_switch=16
null=false
page_policy=open_adaptive
range=2147483648:2684354559
ranks_per_channel=2
read_buffer_size=32
static_backend_latency=10000
static_frontend_latency=10000
tBURST=5000
tCCD_L=0
tCK=1250
tCL=13750
tCS=2500
tRAS=35000
tRCD=13750
tREFI=7800000
tRFC=260000
tRP=13750
tRRD=6000
tRRD_L=0
tRTP=7500
tRTW=2500
tWR=15000
tWTR=7500
tXAW=30000
tXP=0
tXPDLL=0
tXS=0
tXSDLL=0
write_buffer_size=64
write_high_thresh_perc=85
write_low_thresh_perc=50
port=system.membus.master[5]

[system.membus]
type=CoherentXBar
children=badaddr_responder
clk_domain=system.clk_domain
eventq_index=0
forward_latency=4
frontend_latency=3
response_latency=2
snoop_filter=Null
snoop_response_latency=4
system=system
use_default_range=false
width=16
default=system.membus.badaddr_responder.pio
master=system.bridge.slave system.realview.nvmem.port system.realview.gic.pio system.realview.vgic.pio system.realview.local_cpu_timer.pio system.mem_ctrls.port
slave=system.realview.hdlcd.dma system.system_port system.iobridge.master system.cpu.icache_port system.cpu.dcache_port system.cpu.itb.walker.port system.cpu.dtb.walker.port

[system.membus.badaddr_responder]
type=IsaFake
clk_domain=system.clk_domain
eventq_index=0
fake_mem=false
pio_addr=0
pio_latency=100000
pio_size=8
ret_bad_addr=true
ret_data16=65535
ret_data32=4294967295
ret_data64=18446744073709551615
ret_data8=255
system=system
update_data=false
warn_access=warn
pio=system.membus.default
[system.realview]
type=RealView
children=aaci_fake cf_ctrl clcd energy_ctrl ethernet generic_timer gic hdlcd ide kmi0 kmi1 l2x0_fake lan_fake local_cpu_timer mmc_fake nvmem pciconfig realview_io rtc sp810_fake timer0 timer1 uart uart1_fake uart2_fake uart3_fake usb_fake vgic vram watchdog_fake
eventq_index=0
intrctrl=system.intrctrl
pci_cfg_base=805306368
pci_cfg_gen_offsets=false
pci_io_base=0
system=system

[system.realview.aaci_fake]
type=AmbaFake
amba_id=0
clk_domain=system.clk_domain
eventq_index=0
ignore_access=false
pio_addr=470024192
pio_latency=100000
system=system
pio=system.iobus.master[18]

[system.realview.cf_ctrl]
type=IdeController
BAR0=471465984
BAR0LegacyIO=true
BAR0Size=256
BAR1=471466240
BAR1LegacyIO=true
BAR1Size=4096
BAR2=1
BAR2LegacyIO=false
BAR2Size=8
BAR3=1
BAR3LegacyIO=false
BAR3Size=4
BAR4=1
BAR4LegacyIO=false
BAR4Size=16
BAR5=1
BAR5LegacyIO=false
BAR5Size=0
BIST=0
CacheLineSize=0
CapabilityPtr=0
CardbusCIS=0
ClassCode=1
Command=1
DeviceID=28945
ExpansionROM=0
HeaderType=0
InterruptLine=31
InterruptPin=1
LatencyTimer=0
LegacyIOBase=0
MSICAPBaseOffset=0
MSICAPCapId=0
MSICAPMaskBits=0
MSICAPMsgAddr=0
MSICAPMsgCtrl=0
MSICAPMsgData=0
MSICAPMsgUpperAddr=0
MSICAPNextCapability=0
MSICAPPendingBits=0
MSIXCAPBaseOffset=0
MSIXCAPCapId=0
MSIXCAPNextCapability=0
MSIXMsgCtrl=0
MSIXPbaOffset=0
MSIXTableOffset=0
MaximumLatency=0
MinimumGrant=0
PMCAPBaseOffset=0
PMCAPCapId=0
PMCAPCapabilities=0
PMCAPCtrlStatus=0
PMCAPNextCapability=0
PXCAPBaseOffset=0
PXCAPCapId=0
PXCAPCapabilities=0
PXCAPDevCap2=0
PXCAPDevCapabilities=0
PXCAPDevCtrl=0
PXCAPDevCtrl2=0
PXCAPDevStatus=0
PXCAPLinkCap=0
PXCAPLinkCtrl=0
PXCAPLinkStatus=0
PXCAPNextCapability=0
ProgIF=133
Revision=0
Status=640
SubClassCode=1
SubsystemID=0
SubsystemVendorID=0
VendorID=32902
clk_domain=system.clk_domain
config_latency=20000
ctrl_offset=2
disks=
eventq_index=0
io_shift=2
pci_bus=2
pci_dev=0
pci_func=0
pio_latency=30000
platform=system.realview
system=system
config=system.iobus.master[9]
dma=system.iobus.slave[2]
pio=system.iobus.master[8]

[system.realview.clcd]
type=Pl111
amba_id=1315089
clk_domain=system.clk_domain
enable_capture=true
eventq_index=0
gic=system.realview.gic
int_num=46
pio_addr=471793664
pio_latency=10000
pixel_clock=41667
system=system
vnc=system.vncserver
dma=system.iobus.slave[1]
pio=system.iobus.master[4]

[system.realview.energy_ctrl]
type=EnergyCtrl
clk_domain=system.clk_domain
dvfs_handler=system.dvfs_handler
eventq_index=0
pio_addr=470286336
pio_latency=100000
system=system
pio=system.iobus.master[22]

[system.realview.ethernet]
type=IGbE
BAR0=0
BAR0LegacyIO=false
BAR0Size=131072
BAR1=0
BAR1LegacyIO=false
BAR1Size=0
BAR2=0
BAR2LegacyIO=false
BAR2Size=0
BAR3=0
BAR3LegacyIO=false
BAR3Size=0
BAR4=0
BAR4LegacyIO=false
BAR4Size=0
BAR5=0
BAR5LegacyIO=false
BAR5Size=0
BIST=0
CacheLineSize=0
CapabilityPtr=0
CardbusCIS=0
ClassCode=2
Command=0
DeviceID=4213
ExpansionROM=0
HeaderType=0
InterruptLine=1
InterruptPin=1
LatencyTimer=0
LegacyIOBase=0
MSICAPBaseOffset=0
MSICAPCapId=0
MSICAPMaskBits=0
MSICAPMsgAddr=0
MSICAPMsgCtrl=0
MSICAPMsgData=0
MSICAPMsgUpperAddr=0
MSICAPNextCapability=0
MSICAPPendingBits=0
MSIXCAPBaseOffset=0
MSIXCAPCapId=0
MSIXCAPNextCapability=0
MSIXMsgCtrl=0
MSIXPbaOffset=0
MSIXTableOffset=0
MaximumLatency=0
MinimumGrant=255
PMCAPBaseOffset=0
PMCAPCapId=0
PMCAPCapabilities=0
PMCAPCtrlStatus=0
PMCAPNextCapability=0
PXCAPBaseOffset=0
PXCAPCapId=0
PXCAPCapabilities=0
PXCAPDevCap2=0
PXCAPDevCapabilities=0
PXCAPDevCtrl=0
PXCAPDevCtrl2=0
PXCAPDevStatus=0
PXCAPLinkCap=0
PXCAPLinkCtrl=0
PXCAPLinkStatus=0
PXCAPNextCapability=0
ProgIF=0
Revision=0
Status=0
SubClassCode=0
SubsystemID=4104
SubsystemVendorID=32902
VendorID=32902
clk_domain=system.clk_domain
config_latency=20000
eventq_index=0
fetch_comp_delay=10000
fetch_delay=10000
hardware_address=00:90:00:00:00:01
pci_bus=0
pci_dev=0
pci_func=0
phy_epid=896
phy_pid=680
pio_latency=30000
platform=system.realview
rx_desc_cache_size=64
rx_fifo_size=393216
rx_write_delay=0
system=system
tx_desc_cache_size=64
tx_fifo_size=393216
tx_read_delay=0
wb_comp_delay=10000
wb_delay=10000
config=system.iobus.master[26]
dma=system.iobus.slave[4]
pio=system.iobus.master[25]
[system.realview.generic_timer]
type=GenericTimer
eventq_index=0
gic=system.realview.gic
int_phys=29
int_virt=27
system=system

[system.realview.gic]
type=Pl390
clk_domain=system.clk_domain
cpu_addr=738205696
cpu_pio_delay=10000
dist_addr=738201600
dist_pio_delay=10000
eventq_index=0
int_latency=10000
it_lines=128
platform=system.realview
system=system
pio=system.membus.master[2]

[system.realview.hdlcd]
type=HDLcd
amba_id=1314816
clk_domain=system.clk_domain
enable_capture=true
eventq_index=0
gic=system.realview.gic
int_num=117
pio_addr=721420288
pio_latency=10000
pixel_clock=7299
system=system
vnc=system.vncserver
workaround_swap_rb=true
dma=system.membus.slave[0]
pio=system.iobus.master[5]

[system.realview.ide]
type=IdeController
BAR0=1
BAR0LegacyIO=false
BAR0Size=8
BAR1=1
BAR1LegacyIO=false
BAR1Size=4
BAR2=1
BAR2LegacyIO=false
BAR2Size=8
BAR3=1
BAR3LegacyIO=false
BAR3Size=4
BAR4=1
BAR4LegacyIO=false
BAR4Size=16
BAR5=1
BAR5LegacyIO=false
BAR5Size=0
BIST=0
CacheLineSize=0
CapabilityPtr=0
CardbusCIS=0
ClassCode=1
Command=0
DeviceID=28945
ExpansionROM=0
HeaderType=0
InterruptLine=2
InterruptPin=2
LatencyTimer=0
LegacyIOBase=0
MSICAPBaseOffset=0
MSICAPCapId=0
MSICAPMaskBits=0
MSICAPMsgAddr=0
MSICAPMsgCtrl=0
MSICAPMsgData=0
MSICAPMsgUpperAddr=0
MSICAPNextCapability=0
MSICAPPendingBits=0
MSIXCAPBaseOffset=0
MSIXCAPCapId=0
MSIXCAPNextCapability=0
MSIXMsgCtrl=0
MSIXPbaOffset=0
MSIXTableOffset=0
MaximumLatency=0
MinimumGrant=0
PMCAPBaseOffset=0
PMCAPCapId=0
PMCAPCapabilities=0
PMCAPCtrlStatus=0
PMCAPNextCapability=0
PXCAPBaseOffset=0
PXCAPCapId=0
PXCAPCapabilities=0
PXCAPDevCap2=0
PXCAPDevCapabilities=0
PXCAPDevCtrl=0
PXCAPDevCtrl2=0
PXCAPDevStatus=0
PXCAPLinkCap=0
PXCAPLinkCtrl=0
PXCAPLinkStatus=0
PXCAPNextCapability=0
ProgIF=133
Revision=0
Status=640
SubClassCode=1
SubsystemID=0
SubsystemVendorID=0
VendorID=32902
clk_domain=system.clk_domain
config_latency=20000
ctrl_offset=0
disks=system.cf0
eventq_index=0
io_shift=0
pci_bus=0
pci_dev=1
pci_func=0
pio_latency=30000
platform=system.realview
system=system
config=system.iobus.master[24]
dma=system.iobus.slave[3]
pio=system.iobus.master[23]

[system.realview.kmi0]
type=Pl050
amba_id=1314896
clk_domain=system.clk_domain
eventq_index=0
gic=system.realview.gic
int_delay=1000000
int_num=44
is_mouse=false
pio_addr=470155264
pio_latency=100000
system=system
vnc=system.vncserver
pio=system.iobus.master[6]

[system.realview.kmi1]
type=Pl050
amba_id=1314896
clk_domain=system.clk_domain
eventq_index=0
gic=system.realview.gic
int_delay=1000000
int_num=45
is_mouse=true
pio_addr=470220800
pio_latency=100000
system=system
vnc=system.vncserver
pio=system.iobus.master[7]

[system.realview.l2x0_fake]
type=IsaFake
clk_domain=system.clk_domain
eventq_index=0
fake_mem=false
pio_addr=739246080
pio_latency=100000
pio_size=4095
ret_bad_addr=false
ret_data16=65535
ret_data32=4294967295
ret_data64=18446744073709551615
ret_data8=255
system=system
update_data=false
warn_access=
pio=system.iobus.master[12]

[system.realview.lan_fake]
type=IsaFake
clk_domain=system.clk_domain
eventq_index=0
fake_mem=false
pio_addr=436207616
pio_latency=100000
pio_size=65535
ret_bad_addr=false
ret_data16=65535
ret_data32=4294967295
ret_data64=18446744073709551615
ret_data8=255
system=system
update_data=false
warn_access=
pio=system.iobus.master[19]

[system.realview.local_cpu_timer]
type=CpuLocalTimer
clk_domain=system.clk_domain
eventq_index=0
gic=system.realview.gic
int_num_timer=29
int_num_watchdog=30
pio_addr=738721792
pio_latency=100000
system=system
pio=system.membus.master[4]

[system.realview.mmc_fake]
type=AmbaFake
amba_id=0
clk_domain=system.clk_domain
eventq_index=0
ignore_access=false
pio_addr=470089728
pio_latency=100000
system=system
pio=system.iobus.master[21]

[system.realview.nvmem]
type=SimpleMemory
bandwidth=73.000000
clk_domain=system.clk_domain
conf_table_reported=false
eventq_index=0
in_addr_map=true
latency=30000
latency_var=0
null=false
range=0:67108863
port=system.membus.master[1]

[system.realview.pciconfig]
type=PciConfigAll
bus=0
clk_domain=system.clk_domain
eventq_index=0
pio_addr=0
pio_latency=30000
platform=system.realview
size=268435456
system=system
pio=system.iobus.default

[system.realview.realview_io]
type=RealViewCtrl
clk_domain=system.clk_domain
eventq_index=0
idreg=35979264
pio_addr=469827584
pio_latency=100000
proc_id0=335544320
proc_id1=335544320
system=system
pio=system.iobus.master[1]

[system.realview.rtc]
type=PL031
amba_id=3412017
clk_domain=system.clk_domain
eventq_index=0
gic=system.realview.gic
int_delay=100000
int_num=36
pio_addr=471269376
pio_latency=100000
system=system
time=Thu Jan  1 00:00:00 2009
pio=system.iobus.master[10]

[system.realview.sp810_fake]
type=AmbaFake
amba_id=0
clk_domain=system.clk_domain
eventq_index=0
ignore_access=true
pio_addr=469893120
pio_latency=100000
system=system
pio=system.iobus.master[16]

[system.realview.timer0]
type=Sp804
amba_id=1316868
clk_domain=system.clk_domain
clock0=1000000
clock1=1000000
eventq_index=0
gic=system.realview.gic
int_num0=34
int_num1=34
pio_addr=470876160
pio_latency=100000
system=system
pio=system.iobus.master[2]

[system.realview.timer1]
type=Sp804
amba_id=1316868
clk_domain=system.clk_domain
clock0=1000000
clock1=1000000
eventq_index=0
gic=system.realview.gic
int_num0=35
int_num1=35
pio_addr=470941696
pio_latency=100000
system=system
pio=system.iobus.master[3]

[system.realview.uart]
type=Pl011
clk_domain=system.clk_domain
end_on_eot=false
eventq_index=0
gic=system.realview.gic
int_delay=100000
int_num=37
pio_addr=470351872
pio_latency=100000
platform=system.realview
system=system
terminal=system.terminal
pio=system.iobus.master[0]

[system.realview.uart1_fake]
type=AmbaFake
amba_id=0
clk_domain=system.clk_domain
eventq_index=0
ignore_access=false
pio_addr=470417408
pio_latency=100000
system=system
pio=system.iobus.master[13]
[system.realview.uart2_fake]
type=AmbaFake
amba_id=0
clk_domain=system.clk_domain
eventq_index=0
ignore_access=false
pio_addr=470482944
pio_latency=100000
system=system
pio=system.iobus.master[14]

[system.realview.uart3_fake]
type=AmbaFake
amba_id=0
clk_domain=system.clk_domain
eventq_index=0
ignore_access=false
pio_addr=470548480
pio_latency=100000
system=system
pio=system.iobus.master[15]

[system.realview.usb_fake]
type=IsaFake
clk_domain=system.clk_domain
eventq_index=0
fake_mem=false
pio_addr=452984832
pio_latency=100000
pio_size=131071
ret_bad_addr=false
ret_data16=65535
ret_data32=4294967295
ret_data64=18446744073709551615
ret_data8=255
system=system
update_data=false
warn_access=
pio=system.iobus.master[20]

[system.realview.vgic]
type=VGic
clk_domain=system.clk_domain
eventq_index=0
gic=system.realview.gic
hv_addr=738213888
pio_delay=10000
platform=system.realview
ppint=25
system=system
vcpu_addr=738222080
pio=system.membus.master[3]

[system.realview.vram]
type=SimpleMemory
bandwidth=73.000000
clk_domain=system.clk_domain
conf_table_reported=false
eventq_index=0
in_addr_map=true
latency=30000
latency_var=0
null=false
range=402653184:436207615
port=system.iobus.master[11]

[system.realview.watchdog_fake]
type=AmbaFake
amba_id=0
clk_domain=system.clk_domain
eventq_index=0
ignore_access=false
pio_addr=470745088
pio_latency=100000
system=system
pio=system.iobus.master[17]

[system.terminal]
type=Terminal
eventq_index=0
intr_control=system.intrctrl
number=0
output=true
port=3456

[system.vncserver]
type=VncServer
eventq_index=0
frame_capture=false
number=0
port=5900

[system.voltage_domain]
type=VoltageDomain
eventq_index=0
voltage=1.000000

ARM硬體原件清單:
ARM PrimeCell Technical Reference Manual Real Time Clock (PL031)
ARM PrimeCell PS2 Keyboard/Mouse Interface (PL050)
ARM Dual-Timer Module (SP804)
ARM PrimeCell System Controller (SP810)
ARM PrimeCell Generic Interrupt Controller (PL390)
ARM PrimeCell PS2 Keyboard/Mouse Interface (PL050)
ARM PrimeCell Color LCD Controller (PL111)
ARM PrimeCell UART (PL011)

參考資料:
Gem5 Tutorial - Sascha Bischoff / Andreas Hansson
Gem5 Introduce
COEN-4730 Computer Architecture(Fall 2015) - 有pre-compiled PARSEC 2.1 Benchmarks: FS mode for ALPHA architecture
Running Gem5
Gem5 Scons Build System
Gem5 Build System
http://www.gem5.org/dist/tutorials/isca_pres_2011.pdf
Gem5 Git Mirror

2015年12月28日 星期一

ImageView寬高時保持原比例

我只是要把一張bitmap放到App上置中秀出來, 並且可以保持原比例的放滿整個畫面.
為這樣子的功能Google了蠻久的, 因為總覺得不需要太複雜的設定, 就要可以達到這樣子的目的才對啊. 最後終於發現為什麼我一開始無法保持原比例放大了. 目前的結論如下:

layout的xml設定如下(它是一個LinearLayout 再加一個ImageView)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="center" >
    <ImageView android:id="@+id/template_imageview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    </ImageView>
</LinearLayout>
android:layout_height="match_parent" <=== 很多人說要用"wrap_content"

然後在Java的程式裏面
ImageView imageView = (ImageView) findViewById(R.id.template_imageview);
imageView.setImageBitmap(downloadBitmap);
imageView.setAdjustViewBounds(true);
最重要的一行imageView.setAdjustViewBounds(true); 不設定為true的話無法放大圖片.

避免螢幕旋轉再次自動執行onCreate()

寫了一個程式, 裏面放了三個ListView, 依情況分別設定想要秀出來的ListView, 這時才發現, 當我旋轉手機後, 居然會重新呼叫onCreate(), 整個流程就從頭來過了.

查了一下官網的資料Handling The Change, 有教要如何避開這種情況. 主要是要做2個修正.
(1)AndroidManifest.xml (2)新增onConfigurationChanged

這兩個修改步驟如下:
(1)在AndroidManifest.xml裏面加入下圖, 紅色框框的文字.
新增的設定為android:configChanges="orientation|keyboardHidden|screenSize"
(2)在你的Activity.java檔案裏, 加入下面的程式碼
@Overridepublic void onConfigurationChanged(Configuration newConfig){
    super.onConfigurationChanged(newConfig);

}

根據實驗, 這樣子的修改後, 真的不會又被呼叫一次onCreate()了.

2015年12月26日 星期六

Modern C - Jens Gustedt

Jserv推廌的一本電子書, 由在 INRIA (法國國立電腦科學及自動化研究院) 任職的 Jens Gustedt 撰寫. 主要是探討新的 C 語言規格和應用規範.


2015年12月24日 星期四

Resterization

發現一張好圖, 快速的說明了什麼是Resterization.

資料來源:
Android性能优化典范