Filosofi Source Code:
Software dan Hardware
Prof. Dr. Jazi Eko Istiyanto M.Sc
Teknologi Informasi
Mengolah data dan Informasi, untuk
mendapatkan pengetahuan (knowledge) dan kebijaksanaan (wisdom), demi optimalisasi
kebijakan dan eksekusi
Hierarki TI
Data
Information
Knowledge and wisdom
Decision Making
The Most Important
Element
Informa tion
Docu ment
Identity
• Sex
• Name, birth date
Cloud Computing
Armbrust (2009), Cloud Computing dua komponen:
1. Aplikasi yang disediakan sebagai layanan melalui Internet.
2. Perangkat lunak dan keras yang tersedia di
pusat data (data centres) yang menyediakan
layanan tersebut.
Varian Cloud Computing (Buyya, 2008)
1. Software as a Service (SaaS) : adalah penyediaan suatu aplikasi yang ditargetkan pada pengguna individual (misalnya social networking, micro- blogging) dan pengguna bisnis (misalnya ERP – Enterprises Resources Planning, CRM – Customer Relationship Management) secara pay-per-use.
2. Platform as a Service (PaaS) : adalah penyediaan tools untuk pengembangan, pengujian, deployment, hosting, dan pemeliharaan aplikasi secara pay-per-use.
3. Infrastructure as a Service (IaaS) : adalah penyediaan
virtual CPU, disk space, database services secara pay-
per-use.
Keuntungan Cloud Computing
(1) Terciptanya kegiatan komputasi tanpa melanggar hak cipta
(2) Dokumen tersimpan di server penyelenggara
sehingga relatif aman dari kehilangan dokumen (3) Kemudahan mengakses data
(4) Terwujudnya model utility/infrastruktur pada instalasi IT di mana kita hanya membayar apa yang kita pakai saja (pay per use) dan dapat menekan pemborosan capex (capital
expenditure) pada pembelanjaan/pengadaan
sarana IT.
Open Source Software (OSS)
1. Cloud Computing sebagian besar
menggunakan Open Source Software, atau information sharing
2. Pengguna berhak mengunduh,
mengembangkan, dan memodifikasi kode sumber kepentingan bersama.
3. Contoh Apache Web Server, Sistem Operasi
Linux (Debian, FreeBSD, OpenBSD, Ubuntu,
dll), browser web Firefox, care2x.
Karakteristik Open-Source
• Kode sumber (source code) yang dapat diunduh, dimodifikasi, dan dikembangkan oleh pengguna.
• Pengguna tidak hanya sebagai konsumen, tetapi juga developer
• Programmer, tersusun atas programmer inti (core developers), programmer tambahan (periphery developers), dan pelapor bug (bug reporters), direkrut secara sukarela.
• Pengembangan dilakukan secara kolaborasi dengan menggunakan media penghubung Internet.
• Tidak atau sedikit sekali mempergunakan metodologi formal.
• Fokus pengembangan secara kode terbuka hanya pada dua hal yaitu menambah fitur dan perbaikan terhadap bug yang dilaporkan.
Co-Creation
Hubungan antara produsen dan konsumen bersifat dinamik dengan cara melibatkan konsumen secara langsung pada produksi
ataupun distribusi nilai (value).
Termasuk di dalam filosofi Co-Creation:
Cloud Computing dan Open-Source
Jenis Co-Creation
1. Penyelenggara memperoleh keuntungan, pengguna tidak, Yahoo!Answers dan Lego Mindstorm
2. Penyelenggara maupun pengguna sama-sama memperoleh keuntungan
Innocentive, ITMS+iPod, dan eBay
3. Penyelenggara maupun pengguna sama-sama tidak memperoleh keuntungan
Wikipedia, dan Linux
4. Penyelenggara tidak memperoleh, pengguna memperoleh keuntungan
Craiglist di mana penyelenggara berperanan menyediakan
dukungan bagi pengguna untuk memperoleh revenue.
Hukum Metcalfe yang mengatakan bahwa value yang diperoleh seseorang yang bergabung suatu jaringan yang telah memiliki N-1 anggota
berbanding lurus dengan N*(N-1)/2
Semakin banyak anggota komunitas, value yang
diperoleh akan semakin tinggi
Wikinomics
• openness (keterbukaan)
Terbuka akan gagasan SDM eksternal
• peering (persejawatan)
Swa-organisasi, yang dapat bekerja lebih efektif dari pada
manajemen hirarkhis. Pengaruh terbesar dari persejawatan nampak pada produksi software, media, entertainment, dan budaya.
• sharing (berbagi)
Pengelolaan portofolio yang seimbang atas aset kekayaan intelektualnya, sebagian terproteksi dan sebagian terbuka.
• acting globally (bertindak secara global)
Institusi dapat menjadi juara bila ia memiliki pengetahuan tentang sekitarnya : pasar, teknologi, dan manusia.
Open Source Hardware (OSH)
Rancangan hardware (khususnya chip), tidak sepenuhnya bebas diakses publik.
Meskipun demikian pada sisi pengguna hardware, desain implementasi chip, baik
rancangan skematik ataupun source code program pengendali chip, misalnya program mikrokontroler Arduino, dapat bebas diakses
oleh publik (Banzi, 2009).
Cont’d
• Pertama kali menggunakan lisensi Creative Commons Attribution (CCA) disebut Share A- like
• Pengembang diizinkan meng-copy desain
board, mendesain ulang, atau menjual board
hasil desain tanpa biaya lisensi atau meminta
izin
Open Source High-level Hardware Language
• Perancang dapat lebih fokus mendesain sistem komputasi berbasis interaksi langsung dunia nyata, sebagai solusi
alternatif kebutuhan komputasi dan juga sangat
mendukung dunia pendidikan disebabkan sifat open-source dan low-cost
• Pendidik harus cepat beradaptasi seiring pesatnya
perkembangan open-source hardware dan perubahan paradigma fungsi hardware sebagai bagian dari media
tangible devices dan percepatan perubahan arsitektur yang semakin kompleks
• OSH tetap dapat dikomersialkan, layaknya OSS tanpa
mengurangi spirit open-source yang berbasis komunitas
Aspek Penting Open Source
• OSH harus memiliki mekanisme fabrikasi, penjualan, hingga pendistribusian, tanpa mengurangi aspek open-source
hardware.
• OSS pengguna dimudahkan dalam akses, hanya melakukan pengunduhan source code
• OSS maupun OSH, memberi peluang besar bagi komunitas atau pengguna untuk berinteraksi lebih aktif bagi software maupun hardware yang digunakan
• Bagi pendidik, mahasiswa, maupun pengembang harus memiliki kemampuan adaptasi terhadap perkembangan OSS maupun OSH yang dinamis
• OSS maupun OSH memberi kesempatan untuk
mengembangkan local wisdom, menjadi konsumsi global
Program Compilation A Familiar Example
C Program (HLL Code)
Compiler
Assembler
Assembly Code
Machine Code
Void main() {
a= b+c;
d= a-c;
}
add r1,r2 mov r2,r1 add r2,r3 sub r1,r4
110001101010010101 010010100101000011 101011111000111011 110001011111010111 001110101011111111
VLSI Circuit Synthesis (Simplified Flow)
C Program (HLL Code)
High Level Synthesis
Logic Synthesis
RTL Design
Gate Level Design
Layout Synthesis
IC Layout
void main() {
a = b + c;
d = a ‐ c;
}
High Level Synthesis
• Process of transforming a high‐level
description into a functionally equivalent RTL (Register Transfer Level) design
• Also known as
– Behavioral Synthesis – Architectural Synthesis
• Our focus is only on Digital Circuits
High Level Synthesis
Algorithm
High Level Synthesis
Tools
Datapath Controller
Top Down HLS Flow
Algorithm
Scheduling
Alocation
Binding
Datapath & Controller Generation
Datapath Controller
• Storage Units
• Registers
• Memory
• Functional Units
• ALUs
• Interconn Units
• Muxes
• Buses
Optimize Performance Ya hoo!!
USER CONTRAINS
DFG Format: FIR Filter Example
RTL Design Model
• Reset pulse initializes the Datapath registers and Control registers
• Start pulse signals the design to start processing the inputs
• Datapath and Controller communicate with Flags and Control sigs
• Finish signal indicates that the outputs are valid
• Clock signal: ON = Datapath works OFF = Controller works
An Illustrative Example: FIR Filter
After Scheduling Phase….
After FU Allocation and Binding..
Register Optimation
After Register Allocation and Binding
Controller
Behavior Representations
• Data Flow Graph (DFG)
• Node  an operation
• Edge  data transfer
• Control Data Flow Graph (CDFG)
• Node data or control operation
• Edge data or control flow Control nodes arise due to
conditionals, loops, function calls, etc.
HLS Tasks
• Operation Scheduling: timestamp operations without violating data dependencies
• Resource Allocation: given a scheduled graph, allocate resources to execute the schedule
• Resource Binding: map operations/edges to resources
• The above three tasks are performed such that:
• Design constraints (eg., area/speed) are satisfied
• Design attributes (eg., area/speed) are optimized
• The above three tasks are combinatorial problems
• General problem formulations are computationally intractable and therefore heuristics are developed
HLS Algorithms
HLS sub‐problems can be solved based on (not exhaustive):
• Graph Based Algorithms
• List Scheduling
• Clique Partitioning
• Vertex Coloring
• Stochastic Search Heuristics
• Simulated Annealing
• Genetic Algorithm
• Linear Programming Framework
• ILP (Integer LP)
• ZOLP (Zero‐one LP)
Graph Scheduling
• Example DFG
ASAP and ALAP Scheduling
ASAP () begin
T(0) := 0
while (unscheduled node exists) do foreach node n whose
predecessor was scheduled begin t := max{ T(pred(n)) }
T(n) := t + 1 end for
end while end
ALAP ( Tmax) // Tmax is the longest path length begin
T(n) := Tmax + 1
while (unscheduled node exists) do foreach node n whose
successor was scheduled begin t := max{ T(pred(n)) }
T(n) := t + 1 end for
end while end
Problem-Resource Constrained Scedhuling
Schedule the following DFG using resource constrained list scheduling with 3 ALUs
T Ready-List Operations
Scheduled 1
2 3 4
HLS Design Flow
• In traditional flow, scheduling, allocation, and binding
algorithms are run sequentially; in general, the three tasks can be run in any order
• Each task constrains design space for subsequent tasks
• It is shown that simultaneous scheduling/ allocation/ binding yields better solutions
• Iterative flows are also proposed that refine the solution
Why High Level Synthesis?
• Rapid design space exploration of serial to parallel architecture alternatives
• Pareto optimal points can be explored
• Higher abstraction level => Better handle on design complexity (multi‐million transistor design)
• Fast concept‐to‐implementation eg., Users write only high level code (C code)