A Network-based Communication Platform for a Cognitive Computer Mostafa W. Numan, Jesse Frost, Braden J. Phillips, and Michael Liebelt Centre for High Performance Integrated Technologies and Systems (CHiPTec) School of Electrical and Electronic Engineering The University of Adelaide Adelaide, Australia {mostafa.numan,jesse.frost,braden.phillips,michael.liebelt}@adelaide.edu.au Abstract. Street is a reconfigurable parallel computer architecture. It executes a production language directly in hardware with the aim of re- alising advanced cognitive agents in a more energy efficient manner than conventional computers. Street requires frequent communication between many processing elements and to make this communication more energy efficient, a network-based communication platform, StreetNet, is pro- posed in this paper. It maps the processing elements onto a 2D mesh ar- chitecture optimized according to the data dependencies between them. A deadlock-free deterministic routing function is considered for this plat- form along with the concept of sleep period, analogous to human sleeping, to reorganize the placements of processing elements based on runtime traffic statistics. These mechanisms serve to reduce total network traffic and hence minimise energy consumption. Keywords: Cognitive computer, computer architecture, networks-on- chip, mapping 1 Introduction Street is a reconfigurable, flat, parallel architecture designed for symbolic cog- nitive workloads [6]. The goal of Street is to find a new computer architecture that can take advantage of the huge number of transistors in modern integrated circuits to achieve advanced cognitive computation in real time, but with much lower power consumption than current computers. It is designed to use in real time embedded implementations of artificial general intelligence, exemplified by the plethora of potential autonomous robotics applications. The new machine is very different from conventional computers, consisting of many simple process- ing elements executing and communicating in parallel. A bus-based interconnect performs well in production systems with a small number of processing elements, or when groups of dependent productions are mapped to the same processor [1], however it does not scale well for more frequently interacting processing ele- ments. For chips with a large number of processing elements, network based communication provides better scalability, and is seen as the most efficient solu- tion [13]. In this paper, a network-based communication platform, StreetNet, is proposed for efficient communication among the processing elements of Street. 2 Street Street executes a parallel production language directly in hardware. This lan- guage, which we call Street Language, is inspired by Forgy’s OPS5 [5] and the languages used in the Soar [10] and ACT-R [3] cognitive architectures. However Street Language is different from all of these. Street is asynchronous, with no global match-select-act cycle as found in traditional production systems. This asynchronous model provides the best opportunity to parallelise traditional pro- duction systems in application level [2]. 2.1 Street Language An intelligent system is implemented using a set of production rules written in Street Language [6]. Each production rule is an if-then statement: if a specified pattern exists in working memory, then the rule makes some changes to working memory. Working memory is a set of tuples called working memory elements (WMEs). Each WME has one or more elements called attributes. For instance, the WME (ID17 source ID2) has 3 attributes: ID17, source, and ID2. Here is a simple example of working memory of just 3 WMEs: {(ID17 name Torrens), (ID17 source ID2), (isCounted ID5)} Each production rule consists of a left hand side (LHS) of one or more con- dition elements (CEs), and a right hand side (RHS) of one or more actions. In the example in Fig. 1, (
type dog) is a CE and (
isOld) is an ac- tion. A complex cognitive agent would consist of thousands of production rules operating on symbolic and numeric data in working memory. st {oldDogs (
type dog) // condition elements (